Jour de la semaine

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 999 fois - Téléchargée 36 fois

Contenu du snippet

Programme qui détermine le jour de la semaine d'un événement important qui a eu lieu entre 1901 et 2000,par exemple votre jour de naissance!

Source / Exemple :


// naissance.cpp : Defines the entry point for the console application.
//

#include <stdio.h>
#include <iostream.h>
#include <math.h>
#include <stdlib.h>
#include <string.h>

 int annee,mois,jour,correctif,difference;
 char saisie[5];
 bool correct;
 int tab_aux[12];
 int tab_duree [12]={31,28,31,30,31,30,31,31,30,31,30,31};
 char calendrier[13][10]={"janvier","fevrier","mars","avril","mai","juin",
                                   "juillet","aout","septembre","octobre","novembre","decembre"};
 char semaine[8][10]={"lundi","mardi","mercredi","jeudi","vendredi","samedi","dimanche"};

int main(int argc, char* argv[])
{ 
 do
  {
   correct=true;
   cout<<"Entrez votre annee de naissance(comprise entre 1901 et 2000):";
   cin>>saisie;
   int n=strlen(saisie);                        
   annee=atoi(saisie);              
   if(n>4||annee==0||annee<1901||annee>2000)  //eviter une saisie incorrecte
    {                                                              
      correct=false;
      cout<<"Recommencez!"<<endl;
    }
  } while(correct==false);
 if((annee-1900)%4==0)                               //savoir si l'annee est bissextile
   correctif=1;
   else
   correctif=0;
 tab_duree[1]=28+correctif;
 do
  {
   correct=true;
   cout<<"Entrez votre mois de naissance(compris entre 1 et 12):";
   cin>>saisie;
   int n=strlen(saisie);                        
   mois=atoi(saisie);                           
   if(n>2||mois<1||mois>12)           //éviter une saisie incorrecte
    {
     correct=false;
     cout<<"Recommencez!"<<endl;
    }
  } while(correct==false);
 do
  {
   correct=true;
   cout<<"Entrez votre jour de naissance(compris entre 1 et 31):";
   cin>>saisie;
   int n=strlen(saisie);                        
   jour=atoi(saisie);                           
   if(n>2||jour<1||jour>tab_duree[mois-1])            //éviter une saisie incorrecte
    {
     correct=false;
     if(mois!=2)
      cout<<"Recommencez!Le mois de "<<calendrier[mois-1]
     <<" compte "<<tab_duree[mois-1]<<" jours"<<endl;
     if(mois==2)
      {
        if(correctif==0)
          cout<<"Recommencez!Le mois de fevrier d'une annee non bissextile compte 28   
         jours"<<endl;
        else
          cout<<"Recommencez!Le mois de fevrier d'une annee bissextile compte 29    
          jours"<<endl;
      }
    }
  } while(correct==false);

// référence choisie : l'année 2000 qui est bissextile et dont le premier
// janvier tombait un samedi.On pourra vérifier!
//                   ****** premiére étape******
// Déterminer le jour de la semaine correspondant au premier janvier d'une
// année quelconque comprise entre 1901 et 2000

  difference=2000-annee;
  int jr;                                   //jr=1 correspond au lundi,jr=2 au mardi...
  int decalage;
  decalage=difference+floor(difference/4);      //tenir compte du nombre d'annees bissextiles
  jr=6-decalage%7;                                //6 pour le samedi de l'an 2000
  if(jr==0)
  jr=7;
  cout<<"le premier janvier de votre annee de naissance etait un:"<<semaine[jr-1]<<endl;

//                    ******deuxieme étape******
//Dans l'année choisie,compter le nombre de jours écoulés du premier janvier jusqu'au jour 
//de naissance et en déduire alors le jour de la semaine correspondant.

 int somme=0;
 int total=0;
 for(int i=0;i<12;i++)
   { 
     if(i<mois-1)
      tab_aux[i]=1;
     else 
      tab_aux[i]=0;
   }
 for(int j=0;j<12;j++)
   somme+=tab_duree[j]*tab_aux[j];    //mois entiers précédant le mois de naissance
 total=somme+jour-1;                       
 jr=jr+total%7;                       
 int jrnaissance;
 jrnaissance=jr%7;
 if(jrnaissance==0)
  jrnaissance=7;
 cout<<"Vous etes ne(e) un:"<<semaine[jrnaissance-1]<<endl;
 
	return 0;
}

A voir également

Ajouter un commentaire

Commentaire

TheSaib
Messages postés
2369
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
13 -
C'est pas du tout optimisé comme algorithme mais c'est déjà pas mal , excepté que tes tableaux occupe de l'espace mémoire inutilement puisque tu as de la redondance d'info
++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.