Programme pour calculer le jour de naissance
Salut à tous.
Je débute en C++ et j'ai voulu faire un petit programme pour calculer le jour la semaine de notre naissance, mais il donne de mauvais résultats... Je ne comprends pas ou est le problème.
J'ai utilisé l'algorithme décrit ici : http://myriade.editions-bordas.fr/eleve/webfm_send/19
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
| #include <iostream>
#include <string>
using namespace std;
int main() {
int annee, mois, jour;
cout << "Quel est votre année de naissance ?" << endl; cin >> annee;
cout << endl;
cout << "Quel est votre mois de naissance ?" << endl; cin >> mois;
cout << endl;
cout << "Quel est votre jour de naissance ?" << endl; cin >> jour;
cout << endl;
int a (1901 - annee);
int q (a/4);
bool bissextile(0), n;
if (annee % 4 == 0 && (annee % 100 != 0 || annee % 400 == 0)) bissextile = 1;
if (mois == 1) n = 0;
if (mois == 2) n = 31;
if (bissextile == 0 && mois == 3) n = 28+31;
if (bissextile == 0 && mois == 4) n = 31+28+31;
if (bissextile == 0 && mois == 5) n = 30+31+28+31;
if (bissextile == 0 && mois == 6) n = 31+30+31+28+31;
if (bissextile == 0 && mois == 7) n = 30+31+30+31+28+31;
if (bissextile == 0 && mois == 8) n = 31+30+31+30+31+28+31;
if (bissextile == 0 && mois == 9) n = 31+31+30+31+30+31+28+31;
if (bissextile == 0 && mois == 10) n = 30+31+31+30+31+30+31+28+31;
if (bissextile == 0 && mois == 11) n = 31+30+31+31+30+31+30+31+28+31;
if (bissextile == 0 && mois == 12) n = 30+31+30+31+31+30+31+30+31+28+31;
if (bissextile == 1 && mois == 3) n = 29+31;
if (bissextile == 1 && mois == 4) n = 31+29+31;
if (bissextile == 1 && mois == 5) n = 30+31+29+31;
if (bissextile == 1 && mois == 6) n = 31+30+31+29+31;
if (bissextile == 1 && mois == 7) n = 30+31+30+31+29+31;
if (bissextile == 1 && mois == 8) n = 31+30+31+30+31+29+31;
if (bissextile == 1 && mois == 9) n = 31+31+30+31+30+31+29+31;
if (bissextile == 1 && mois == 10) n = 30+31+31+30+31+30+31+29+31;
if (bissextile == 1 && mois == 11) n = 31+30+31+31+30+31+30+31+29+31;
if (bissextile == 1 && mois == 12) n = 30+31+30+31+31+30+31+30+31+29+31;
int s(a + q + n + jour + 1);
int r(s % 7);
string resultat;
if (r == 0) resultat = "dimanche";
if (r == 1) resultat = "lundi";
if (r == 2) resultat = "mardi";
if (r == 3) resultat = "mercredi";
if (r == 4) resultat = "jeundi";
if (r == 5) resultat = "vendredi";
if (r == 6) resultat = "samedi";
cout << "Vous êtes nés un " << resultat << " !" << endl;
return 0;
} |