diff options
Diffstat (limited to 'sem_2/HLIN202/TP/TP3-4/ex13')
| -rw-r--r-- | sem_2/HLIN202/TP/TP3-4/ex13/exo13 | bin | 0 -> 13775 bytes | |||
| -rw-r--r-- | sem_2/HLIN202/TP/TP3-4/ex13/exo13.cpp | 137 |
2 files changed, 137 insertions, 0 deletions
diff --git a/sem_2/HLIN202/TP/TP3-4/ex13/exo13 b/sem_2/HLIN202/TP/TP3-4/ex13/exo13 Binary files differnew file mode 100644 index 0000000..fb21331 --- /dev/null +++ b/sem_2/HLIN202/TP/TP3-4/ex13/exo13 diff --git a/sem_2/HLIN202/TP/TP3-4/ex13/exo13.cpp b/sem_2/HLIN202/TP/TP3-4/ex13/exo13.cpp new file mode 100644 index 0000000..8a89e71 --- /dev/null +++ b/sem_2/HLIN202/TP/TP3-4/ex13/exo13.cpp @@ -0,0 +1,137 @@ + #include<iostream> + +int nbjourmois(int,bool); +int saisieJour(int,bool); +int saisieMois(); +int saisieAnnee(); +void affichejour(); +bool estbissextile(int); +int nbjourmois(int,bool); +int compteJours(int,int,bool); +int compteanneebissextile(int); +void codeJourAnnee(int,int,int); + +int main () { + int jour, mois, annee; + annee = saisieAnnee (); + mois= saisieMois (); + jour= saisieJour(mois, estbissextile(annee)); + codeJourAnnee(jour,mois,annee ); + return 0; +} + +int saisieJour (int mois, bool bissextile) { + int enter; + std::cout<<"Entrez le jour " << std::endl; + std::cin>>enter; + if ( enter > nbjourmois(mois, bissextile) || enter < 1) { + std::cout<< " Jour incorrect" << std::endl; + enter = saisieJour ( mois, bissextile); + } + return enter; +} + +int saisieMois () { + int enter; + std::cout<<"Entrez le mois"<<std::endl; + std::cin>>enter; + if ( enter < 1 || enter > 12 ) { + std::cout<<"Mois incorrect"<<std::endl; + enter = saisieMois (); + } + return enter; +} + +int saisieAnnee () { + int enter; + std::cout<<"Entrez l'annee"<<std::endl; + std::cin>>enter; + return enter; +} + +void affichejour ( int jour) { + switch ( jour ) { + case 0 : + std::cout<<"Lundi"<<std::endl; + break; + case 1 : + std::cout<<"Mardi"<<std::endl; + break; + case 2 : + std::cout<<"Mercredi"<<std::endl; + break; + case 3 : + std::cout<<"Jeudi"<<std::endl; + break; + case 4 : + std::cout<<"Vendredi"<<std::endl; + break; + case 5 : + std::cout<<"Samedi"<<std::endl; + break; + case 6 : + std::cout<<"Dimanche"<<std::endl; + break; + } +} + +bool estbissextile ( int n ) { + bool ret=false; + if ( n % 4 == 0 && n % 100 != 0 ) { + ret = true; + } + else if ( n % 400 == 0 ) { + ret = true; + } + return ret; +} + +int nbjourmois ( int n, bool bissextile) { + if ( n == 1 || n == 3 || n == 5 || n == 7 || n == 8 || n == 10 || n ==12 ) { + return 31; + } + else if ( n == 2) { + return bissextile ? 29 : 28; + } + else { + return 30; + } +} + +int compteJours ( int jour, int mois, bool bissextile) { + int jours = 0; + jours = jour; + for ( int i=1; i < mois; i ++){ + jours += nbjourmois(i, estbissextile(i)); + } + return jours; +} + +int compteanneebissextile ( int annee) { + int cpt=annee; + int rslt=0; + while ( cpt != 2000) { + if ( estbissextile(cpt)) { + rslt ++; + } + annee < 2000 ? cpt ++ : cpt --; + } + return rslt; +} + +void codeJourAnnee ( int jour, int mois, int annee) { + int rslt = 0; +//premier janvier 2000 : samedi affichejour(5); + if ( annee < 2000) { + rslt = (2000 - annee)*365 + compteanneebissextile(annee) - compteJours(jour, mois, estbissextile(annee));; + } + else if (annee > 2000 ) { + rslt += estbissextile(annee) ? compteJours(jour, mois, true) : compteJours(jour, mois, false); + rslt += (annee-2000)*365 + compteanneebissextile(annee)+1; + } + else { + rslt += compteJours(jour,mois, estbissextile(annee)); + } + std::cout<<"Le "<<jour << "/"<<mois<<"/"<<annee<<" est un "; + affichejour((rslt+4)%7); +} |
