cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 2010
-
23 août 2008 à 17:00
hazkaal
Messages postés67Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 4 novembre 2008
-
24 août 2008 à 15:28
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
hazkaal
Messages postés67Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 4 novembre 2008 24 août 2008 à 15:28
C'est cool, j'apprend plein de chose :p
Oui Brunews on peu... BRAVO
L'utilisé d'une telle source ?
"Je pense que cet algorithme peut être pratique pour ceux qui veulent créer un "mini systeme d'exploitation" pour à partir de ce timestamp créer une horloge système et retrouver n'importe quelle date exacte juste en enregistrant le timestamp."
Ou peut être un agenda ?
J'en sait rien, je vais essayer d'améliorer ma source en restant dans l'algo que j'ai monté, BRUNEWS, je met ton code aussi !
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 20142 24 août 2008 à 12:57
Je l'ai pensser plus tard et je l'ai poster sur codyx on peut meme remplacer GetSystemTime, par GetSystemTimeAsFileTime..
Neo_Fr
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 24 août 2008 à 07:18
La valeur du 01/01/1970 ayant peu de chance de varier, on peut résumer la source à cela:
DWORD __stdcall GetTimeStamp(void)
{
SYSTEMTIME stTime;
FILETIME flTime;
QWORD qwSystemTime;
GetSystemTime(&stTime);
SystemTimeToFileTime(&stTime, &flTime);
qwSystemTime = *((QWORD*) &flTime);
return (DWORD) ((qwSystemTime - 0x19DB1DED53E8000) / 10000000);
}
se pose maintenant l'utilité d'une telle source.
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 24 août 2008 à 00:52
EHO
ce que j'ai appelé bIsYearBissextile était une variable et pas une fonction!
l'important était t.wYear%4
Neo_Fr
Messages postés653Date d'inscriptionmardi 6 décembre 2005StatutMembreDernière intervention10 novembre 20142 23 août 2008 à 23:13
int main(void)
{
printf("%i\n", GetTimeStamp());
system("PAUSE");
return 0;
}
Neo_Fr
hazkaal
Messages postés67Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 4 novembre 2008 23 août 2008 à 22:42
Je ne parles en aucun cas de "connaiçances avancée" et partout où j'ai présenté ce projet, j'ai été surprit de découvrir que personne ne sait qu'une année bisextile est multiple de 4.
Oui, en effet ça m'a l'air d'être plus clair ainsi mais n'ayant pas de grandes connaissances en C/C++ je ne connaissait pas "IsYearBissextile", ça parait plus logique SAUF si le systeme ne conait pas une fonction pour (ainsi comme je le disais) il n'y a pa besoin de fonctions spéciales pour cet algorithme. Sinon je ne me serais pas embêté : tout comme en php, il existe une fonction pour avoir le Timestamp !
Merci encore de t'être expliqué !
A bientôt !
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 23 août 2008 à 21:22
"Serais tu cabable de trouver si une année est bisextile ou non en ayant juste l'année ?"
ben ouais pourquoi, pas toi? L'année est bissextile si multiple de 4 et pas multiple de 400 (mais bon, pas besoin de ce dernier critère dans ton code); d'un point de vue C, tout simplement : bool bIsYearBissextile=!(t.wYear%4);
Quant aux connaissances, je maintiens ce que j'ai dit. Je disais cela simplement pour que tu te rendes compte que c'était un peu ridicule de parler de connaissances avancées.
Et puisque tu veux des suggestions :
concernant le calcul (justement) du temps correspondant aux années, tu te contentes d'additionner les jours en incrémentant les années. Cela n'est pas optimal du tout, il y a moyen de faire le calcul directement. Comme tu sais qu'une année sur 4 est bissextile, il te suffit de définir un intervalle multiple de 4 entre tes années départ et arrivée, de le diviser par 4, de multiplier le résultat par le nombre de jours écoulés en 4 ans (soit 3*365+366=1461), et pour finir de rajouter les années qui dépassent : ton intervalle n'est pas nécessairement multiple de 4, donc il y en a au maximum 3 qui restent : avoue que c'est quand même plus rapide.
hazkaal
Messages postés67Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 4 novembre 2008 23 août 2008 à 21:11
Merci !!!
J'essayerais de corriger cela demain !
gamemonde
Messages postés336Date d'inscriptionsamedi 9 août 2003StatutMembreDernière intervention 9 juillet 20112 23 août 2008 à 20:10
Bon voila un petit default tu as trop de if
pour tes mois si tu utilisais un tableau contenant le nombre de seconde ou tout simplement le nombre de jour du mois , tu pourrais utilisé une boucle
for ( int i = 0; i < dtm,i++)
{
tts + = ....
}
ce qui rendrais tes if qui font environ 40 lignes en moin de dix lignes
ensuite tu uilises que des variables globales . ton code en a pas besoin mais tout tes variables dans ta fonction timestamp et retourne la valeur de tts
int main()
{
int iTimeStamp = timestamp();
....
}
}
hazkaal
Messages postés67Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 4 novembre 2008 23 août 2008 à 18:22
Désolé de double poster mais à mon avis si tous "gens visitant ce site sont capables de comprendre quelques additions et multiplications" et de monter un algorithme pouvant calculer si une anné est bisextile, il y aurait des dixaine et des dixaine de sources de Timestamp. Ce n'est pas le cas la mienne est la premiere.
Bonne soirée ;)
hazkaal
Messages postés67Date d'inscriptiondimanche 4 février 2007StatutMembreDernière intervention 4 novembre 2008 23 août 2008 à 17:49
Serais tu cabable de trouver si une année est bisextile ou non en ayant juste l'année ?La plupart des forums où j'ai présentés ce projet ne comprenaient pas ce calcul.
Je ne saisis pas bien si tes propos sont ironiques ou non et s'ils le sont où est l'aide demandée ; j'ai écrit "Je vous laisse regarder et commenter, n'hésitez pas à m'expliquer les défaults !!!" ainsi tes commentaires qui ne sont pas susceptibles de m'aider dans ce projet, merci de les oublier.
A bientôt.
Cordialement.
HazKaaL
cs_juju12
Messages postés966Date d'inscriptionsamedi 3 avril 2004StatutMembreDernière intervention 4 mars 20104 23 août 2008 à 17:00
"nécésite des connaissances approfondies en mathématiques"
par rapport à un élève de primaire, peut-être.
mais la plupart des gens visitant ce site sont capables de comprendre quelques additions et multiplications je pense.
24 août 2008 à 15:28
Oui Brunews on peu... BRAVO
L'utilisé d'une telle source ?
"Je pense que cet algorithme peut être pratique pour ceux qui veulent créer un "mini systeme d'exploitation" pour à partir de ce timestamp créer une horloge système et retrouver n'importe quelle date exacte juste en enregistrant le timestamp."
Ou peut être un agenda ?
J'en sait rien, je vais essayer d'améliorer ma source en restant dans l'algo que j'ai monté, BRUNEWS, je met ton code aussi !
24 août 2008 à 12:57
Neo_Fr
24 août 2008 à 07:18
DWORD __stdcall GetTimeStamp(void)
{
SYSTEMTIME stTime;
FILETIME flTime;
QWORD qwSystemTime;
GetSystemTime(&stTime);
SystemTimeToFileTime(&stTime, &flTime);
qwSystemTime = *((QWORD*) &flTime);
return (DWORD) ((qwSystemTime - 0x19DB1DED53E8000) / 10000000);
}
se pose maintenant l'utilité d'une telle source.
24 août 2008 à 00:52
ce que j'ai appelé bIsYearBissextile était une variable et pas une fonction!
l'important était t.wYear%4
23 août 2008 à 23:13
typedef unsigned __int64 QWORD;
DWORD __stdcall GetTimeStamp(void)
{
SYSTEMTIME stTime;
FILETIME flTime;
QWORD qwSystemTime;
QWORD qwUnixTime;
DWORD dwTimeStamp;
GetSystemTime(&stTime);
SystemTimeToFileTime(&stTime, &flTime);
qwSystemTime = *((QWORD*) &flTime);
ZeroMemory(&stTime, sizeof(SYSTEMTIME));
stTime.wYear = 1970;
stTime.wMonth = 1;
stTime.wDay = 1;
SystemTimeToFileTime(&stTime, &flTime);
qwUnixTime = *((QWORD*) &flTime);
dwTimeStamp = ((qwSystemTime-qwUnixTime) / 10000000);
return dwTimeStamp;
}
int main(void)
{
printf("%i\n", GetTimeStamp());
system("PAUSE");
return 0;
}
Neo_Fr
23 août 2008 à 22:42
Oui, en effet ça m'a l'air d'être plus clair ainsi mais n'ayant pas de grandes connaissances en C/C++ je ne connaissait pas "IsYearBissextile", ça parait plus logique SAUF si le systeme ne conait pas une fonction pour (ainsi comme je le disais) il n'y a pa besoin de fonctions spéciales pour cet algorithme. Sinon je ne me serais pas embêté : tout comme en php, il existe une fonction pour avoir le Timestamp !
Merci encore de t'être expliqué !
A bientôt !
23 août 2008 à 21:22
ben ouais pourquoi, pas toi? L'année est bissextile si multiple de 4 et pas multiple de 400 (mais bon, pas besoin de ce dernier critère dans ton code); d'un point de vue C, tout simplement : bool bIsYearBissextile=!(t.wYear%4);
Quant aux connaissances, je maintiens ce que j'ai dit. Je disais cela simplement pour que tu te rendes compte que c'était un peu ridicule de parler de connaissances avancées.
Et puisque tu veux des suggestions :
concernant le calcul (justement) du temps correspondant aux années, tu te contentes d'additionner les jours en incrémentant les années. Cela n'est pas optimal du tout, il y a moyen de faire le calcul directement. Comme tu sais qu'une année sur 4 est bissextile, il te suffit de définir un intervalle multiple de 4 entre tes années départ et arrivée, de le diviser par 4, de multiplier le résultat par le nombre de jours écoulés en 4 ans (soit 3*365+366=1461), et pour finir de rajouter les années qui dépassent : ton intervalle n'est pas nécessairement multiple de 4, donc il y en a au maximum 3 qui restent : avoue que c'est quand même plus rapide.
23 août 2008 à 21:11
J'essayerais de corriger cela demain !
23 août 2008 à 20:10
pour tes mois si tu utilisais un tableau contenant le nombre de seconde ou tout simplement le nombre de jour du mois , tu pourrais utilisé une boucle
for ( int i = 0; i < dtm,i++)
{
tts + = ....
}
ce qui rendrais tes if qui font environ 40 lignes en moin de dix lignes
ensuite tu uilises que des variables globales . ton code en a pas besoin mais tout tes variables dans ta fonction timestamp et retourne la valeur de tts
int main()
{
int iTimeStamp = timestamp();
....
}
}
23 août 2008 à 18:22
Bonne soirée ;)
23 août 2008 à 17:49
Je ne saisis pas bien si tes propos sont ironiques ou non et s'ils le sont où est l'aide demandée ; j'ai écrit "Je vous laisse regarder et commenter, n'hésitez pas à m'expliquer les défaults !!!" ainsi tes commentaires qui ne sont pas susceptibles de m'aider dans ce projet, merci de les oublier.
A bientôt.
Cordialement.
HazKaaL
23 août 2008 à 17:00
par rapport à un élève de primaire, peut-être.
mais la plupart des gens visitant ce site sont capables de comprendre quelques additions et multiplications je pense.