Alpacha
Messages postés95Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention20 mars 2006
-
11 août 2004 à 16:07
BlackGoddess
Messages postés338Date d'inscriptionjeudi 22 août 2002StatutMembreDernière intervention14 juin 2005
-
16 août 2004 à 10:46
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
char buff[20];
strftime(buff, 20, "%A", &saisie);// jour de la semaine
puts(buff);
return 0;
}
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 13 août 2004 à 15:14
Bah ce sont les deux seuls cas qu'on traite (si < 1900 ou >= 2100, le résultat n'est pas spécifié)
par exemple: a = 2004
a / 100 donne 20 donne (a / 100) * 100 donne 2000
vbvirtual
Messages postés9Date d'inscriptionlundi 18 août 2003StatutMembreDernière intervention13 août 2004 13 août 2004 à 02:21
slt
desolé je pense pas que :
a = (a / 100) * 100; // !!
est :
if ((a>=1900) && (a<=1999)) s=1900;
else if ((a>=2000) && (a<=2099)) s=2000;
Alpacha
Messages postés95Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention20 mars 2006 11 août 2004 à 21:17
aussi oui pas mal
vecchio tu peux me critiquer je ne suis pas encore à un assez bon niveau en programmation mathématique :)
Alp
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 11 août 2004 à 21:14
et pourquoi pas remplacer
if ((a>=1900) && (a<=1999)) s=1900;
else if ((a>=2000) && (a<=2099)) s=2000;
par a = (a / 100) * 100;
cs_Seraphinus
Messages postés9Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention11 août 2004 11 août 2004 à 21:04
merci vecchio56 ...ça c'est du commentaire utile...j'avais pas pensé a réunir ces trois lignes...
Amicalement Seraphinus
cs_Seraphinus
Messages postés9Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention11 août 2004 11 août 2004 à 21:01
nan mais messieurs pas de polémique ...c'est vrai que je ne sais pas d'ou sort cette formule mais c'est juste un petit prog pour ceux que ça amuse...la formule est juste et ca c'est le principal...ceux qui veulent la mettre dans leur prog n'ont juste qu'a la recopier...des fois on ne peux pas toujours tout expliquer...
Amicalement seraphinus
ps: merci alp
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 11 août 2004 à 21:00
C'est vrai que la plupart des débutants font ce genre de sources et c'est compréhensible. Dans ce cas je me permets une remarque:je rempacerais
nbr=(((13*m)-1)/5)+(a/4)+(s/4)+a+j-(2*s)-1;
nbr=nbr%7;
if (nbr<0) nbr=nbr+7;
comme tu fais un modulo 7, -1 c'est comme +6
je remplace ces 3 lignes par celle ci:
nbr=((((13*m)-1)/5)+(a/4)+(s/4)+a+j-(2*s)+6)%7;
Ensuite, on ne fait surtout pas de #include<conio.c>, tu devrais ajouter ce fichier à ton projet, et #include <conio.h>
Alpacha
Messages postés95Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention20 mars 2006 11 août 2004 à 20:51
oui il aurait pu mettre un comm pour dire qu'il l'avait eu dans son cours c'est tout, donc bon et puis il débute en C il me semble donc le but pour lui n'est pas de faire un code bien structuré mais plutot que son programme marche; une fois qu'il aura les capactités il fera un code propre je pense
qu'en penses tu?
Alp
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 11 août 2004 à 20:47
Toi tu sais peut-être d'ou elle vient mais nous on ne le sait pas, et si ton but est juste que tes programmes marchent, autant amener directement des exe sans source, marce que ca ne nous apprends rien (ou peut être que cette formule est évident et que je suis trop bête pour la comprendre...).
Alpacha> D'accord, mais je ne poste pas de source qui demande m et qui renvoie E
Alpacha
Messages postés95Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention20 mars 2006 11 août 2004 à 20:44
exactement c'est bien dit :)
Alp
cs_Seraphinus
Messages postés9Date d'inscriptionvendredi 23 mai 2003StatutMembreDernière intervention11 août 2004 11 août 2004 à 20:42
Mon cher vecchio56 je ne sais d'ou viens cette formule...elle m'a été fournie avec mon cours ....tout ce que je peux te dire c'est que j'ai rajouté le moins un parce que autrement j'avais un problème avec les samedi...mais comme tout les codes que je poste et posterai ici l'important pour moi est qu'ils fonctionnent...et celui-ci fonctionne a merveille...
amicalement Seraphinus.
Alpacha
Messages postés95Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention20 mars 2006 11 août 2004 à 20:33
vecchio c'est une formule qu'il n'a pas inventé c'est un calcul mathématique surement trouvé qqpart cependant elle marche, c'est comme si je te demandais pq E=MC² non?
Alp
vecchio56
Messages postés6535Date d'inscriptionlundi 16 décembre 2002StatutMembreDernière intervention22 août 201014 11 août 2004 à 20:25
La moindre des choses serait d'expliquer d'ou vient l'affreuse formule nbr=(((13*m)-1)/5)+(a/4)+(s/4)+a+j-(2*s)-1;
Alpacha
Messages postés95Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention20 mars 2006 11 août 2004 à 16:10
correction : while(quitter==0)
et si jour>31 quitter=1
ca serait pas bien?
Alpacha
Messages postés95Date d'inscriptionmardi 9 mars 2004StatutMembreDernière intervention20 mars 2006 11 août 2004 à 16:07
pas mal meme si si t'avais mis un while quitter==1 tu fais ca en boucle et si on entre un jour supérieur à 31 ca quitte un truc du genre tu vois ce que je veux dire?
Amicalement
Alp
16 août 2004 à 10:46
#include <stdio.h>
#include <memory.h>
#include <time.h>
int main()
{
struct tm saisie;
memset(&saisie, 0, sizeof saisie);
if(scanf("%d/%d/%d", &saisie.tm_mday, &saisie.tm_mon-1, &saisie.tm_year) < 3) // saisie d'une date
{
puts("mauvaise saisie.");
return 0;
}
saisie.tm_mon -= 1;
saisie.tm_year -= 1900;
if(mktime(&saisie) == -1) // remplir les champs restants
{
puts("mauvaise saisie.");
return 0;
}
char buff[20];
strftime(buff, 20, "%A", &saisie);// jour de la semaine
puts(buff);
return 0;
}
13 août 2004 à 15:14
par exemple: a = 2004
a / 100 donne 20 donne (a / 100) * 100 donne 2000
13 août 2004 à 02:21
desolé je pense pas que :
a = (a / 100) * 100; // !!
est :
if ((a>=1900) && (a<=1999)) s=1900;
else if ((a>=2000) && (a<=2099)) s=2000;
11 août 2004 à 21:17
vecchio tu peux me critiquer je ne suis pas encore à un assez bon niveau en programmation mathématique :)
Alp
11 août 2004 à 21:14
if ((a>=1900) && (a<=1999)) s=1900;
else if ((a>=2000) && (a<=2099)) s=2000;
par a = (a / 100) * 100;
11 août 2004 à 21:04
Amicalement Seraphinus
11 août 2004 à 21:01
Amicalement seraphinus
ps: merci alp
11 août 2004 à 21:00
nbr=(((13*m)-1)/5)+(a/4)+(s/4)+a+j-(2*s)-1;
nbr=nbr%7;
if (nbr<0) nbr=nbr+7;
comme tu fais un modulo 7, -1 c'est comme +6
je remplace ces 3 lignes par celle ci:
nbr=((((13*m)-1)/5)+(a/4)+(s/4)+a+j-(2*s)+6)%7;
Ensuite, on ne fait surtout pas de #include<conio.c>, tu devrais ajouter ce fichier à ton projet, et #include <conio.h>
11 août 2004 à 20:51
qu'en penses tu?
Alp
11 août 2004 à 20:47
Alpacha> D'accord, mais je ne poste pas de source qui demande m et qui renvoie E
11 août 2004 à 20:44
Alp
11 août 2004 à 20:42
amicalement Seraphinus.
11 août 2004 à 20:33
Alp
11 août 2004 à 20:25
11 août 2004 à 16:10
et si jour>31 quitter=1
ca serait pas bien?
11 août 2004 à 16:07
Amicalement
Alp