BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 2 févr. 2009 à 17:50
C'est quoi ce souk d'une tonne de variables pour un si petit calcul ???
Pire de tout, c'est d'utiliser des flottants là où il faut des entiers.
Un développeur ne doit pas amuser le CPU, il doit aller au résultat juste par le plus court chemin.
// ON METTRA LA DATE EN STRUCT POUR NE PASSER QU'1 SEUL PARAM
typedef struct _BNDATE {
BYTE j;
BYTE m;
WORD y;
} BNDATE, *LPBNDATE;
DWORD bnJourSemaine(LPBNDATE pdt)
{
DWORD j, m, a, t;
a = pdt->y;
m = pdt->m;
if(m && (m < 3)) {m += 12; a--;}
j = a / 100;
t = a % 100;
m++;
m *= 26;
m /= 10;
t += (t / 4);
t += (DWORD) pdt->j;
t += (j / 4);
t += (j * 5);
t += m;
m = (t / 7) * 7;
t -= m;
return t;
}
2 févr. 2009 à 17:50
Pire de tout, c'est d'utiliser des flottants là où il faut des entiers.
Un développeur ne doit pas amuser le CPU, il doit aller au résultat juste par le plus court chemin.
// ON METTRA LA DATE EN STRUCT POUR NE PASSER QU'1 SEUL PARAM
typedef struct _BNDATE {
BYTE j;
BYTE m;
WORD y;
} BNDATE, *LPBNDATE;
char szappname[] = "JourSem";
char *szJOURS[7] = {"samedi", "dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi"};
DWORD bnJourSemaine(LPBNDATE pdt)
{
DWORD j, m, a, t;
a = pdt->y;
m = pdt->m;
if(m && (m < 3)) {m += 12; a--;}
j = a / 100;
t = a % 100;
m++;
m *= 26;
m /= 10;
t += (t / 4);
t += (DWORD) pdt->j;
t += (j / 4);
t += (j * 5);
t += m;
m = (t / 7) * 7;
t -= m;
return t;
}
void TestJourSem(VOID)
{
BNDATE bnd;
DWORD r;
bnd.j = 29;
bnd.m = 2;
bnd.y = 2008;
r = bnJourSemaine(&bnd);
MessageBox(0, szJOURS[r], szappname, 0);
bnd.j = 34; // MEME ICI LE RESULTAT EST COHERENT !!!
bnd.m = 2;
bnd.y = 2008;
r = bnJourSemaine(&bnd);
MessageBox(0, szJOURS[r], szappname, 0);
}
CETTE SOURCE NE SERA PAS CONSERVEE.
2 févr. 2009 à 17:44