En effet, j’ai étrangement l’impression de confondre le mois présent et le mois passé.
Voici un code fonctionnel :
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 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | #include <stdio.h> #include <stdbool.h> int main (void) { unsigned jour, mois, annee; int nb_jours; bool bis_1, bis_2; printf("Entrez une date (jj/mm/aaaa) : "); scanf("%u/%u/%u", &jour, &mois, &annee); bis_1 = annee % 4 == 0 && (annee % 100 != 0 || annee % 400 == 0); bis_2 = annee % 4 == 0; nb_jours = 365 * (annee - 1); if (annee > 1582) { nb_jours += (annee - 1)/4; nb_jours -= (annee - 1)/100; nb_jours += (annee - 1)/400; nb_jours += 2; } else { nb_jours += (annee - 1)/4; } nb_jours += 31 * (mois - 1); switch (mois) { case 3: case 4: if (annee > 1582) { nb_jours -= (bis_1) ? 2 : 3; } else { nb_jours -= (bis_2) ? 2 : 3; } break; case 5: case 6: if (annee > 1582) { nb_jours -= (bis_1) ? 3 : 4; } else { nb_jours -= (bis_2) ? 3 : 4; } break; case 7: case 8: case 9: if (annee > 1582) { nb_jours -= (bis_1) ? 4 : 5; } else { nb_jours -= (bis_2) ? 4 : 5; } break; case 10: case 11: if (annee > 1582) { nb_jours -= (bis_1) ? 5 : 6; } else { nb_jours -= (bis_2) ? 5 : 6; } break; case 12: if (annee > 1582) { nb_jours -= (bis_1) ? 7 : 8; } else { nb_jours -= (bis_2) ? 7 : 8; } 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; } |
EDIT : Ah oui, dans la correction vous utilisez une technique particulière avec le switch
, ce qui allège le code.
+0
-0