Bonjour, je suis coincé au TP où le programme se doit de déterminer le jour de la semaine correspondant à une date donnée, exactement à la dernière partie (celle qui correspond aux objectifs du tp).
Mon programme ne fonctionne pas pour les années bissextiles (par exemple l’an mille). Je pense que c’est lié au fait que j’écris année
au lieu de année - 1
dans mes sucres syntaxiques, ce qui fait que j’ajoute un jour dans le cas où l’année entrée est bissextile.
Maintenant, si j’écris année - 1
, il faudra que je traite les cas où l’année présente et bissextile ou non, ce qui veux dire plusieurs switch
(le code sera trop long!).
Ensuite, pour toute les années, ça déconne si j’entre un jour du mois de février, j’ai du mal à voir pourquoi.
Voici mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 | #include <stdio.h> int main (void) { unsigned jour; unsigned mois; unsigned annee; int nb_jours; printf("Entrez une date (jj/mm/aaaa) : "); scanf("%u/%u/%u", &jour, &mois, &annee); nb_jours = 365 * (annee - 1); if (annee > 1582) { nb_jours += annee/4; nb_jours -= annee/100; nb_jours += annee/400; nb_jours += 2; } else { nb_jours += annee/4; } nb_jours += 31 * (mois - 1); switch (mois) { case 2: case 3: nb_jours -= 3; break; case 4: case 5: nb_jours -= 4; break; case 6: case 7: case 8: nb_jours -= 5; break; case 9: case 10: nb_jours -= 6; break; case 11: case 12: nb_jours -= 7; break; } nb_jours += (jour - 1); switch (nb_jours % 7) { case 0: printf("C'est un samedi\n"); break; case 1: printf("C'est un dimanche\n"); break; case 2: printf("C'est un lundi\n"); break; case 3: printf("C'est un mardi\n"); break; case 4: printf("C'est un mercredi\n"); break; case 5: printf("C'est un jeudi\n"); break; case 6: printf("C'est un vendredi\n"); break; default: printf("Faille cosmique...\n"); break; } return 0; } |
Merci d’avance.