summaryrefslogtreecommitdiff
path: root/sem_2/HLIN202/TP/TP3-4/ex13
diff options
context:
space:
mode:
authorGaspard Coulet <gaspard.coulet@mines-ales.org>2021-04-28 23:05:53 +0200
committerGaspard Coulet <gaspard.coulet@mines-ales.org>2021-04-28 23:05:53 +0200
commit9fe033ea88c2f705ec18c232873d056e0c229d72 (patch)
tree0647dc8c51610c7336c88c04de2068ea14b21e17 /sem_2/HLIN202/TP/TP3-4/ex13
Initial commit
Diffstat (limited to 'sem_2/HLIN202/TP/TP3-4/ex13')
-rw-r--r--sem_2/HLIN202/TP/TP3-4/ex13/exo13bin0 -> 13775 bytes
-rw-r--r--sem_2/HLIN202/TP/TP3-4/ex13/exo13.cpp137
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
new file mode 100644
index 0000000..fb21331
--- /dev/null
+++ b/sem_2/HLIN202/TP/TP3-4/ex13/exo13
Binary files differ
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);
+}