begin process at 2012 02 07 09:16:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths & Algorithmes

 > JOUR DE LA SEMAINE

JOUR DE LA SEMAINE


 Information sur la source

Note :
Aucune note
Catégorie :Maths & Algorithmes Niveau :Débutant Date de création :23/08/2002 Date de mise à jour :23/08/2002 15:48:39 Vu :4 289

Auteur : bonmau

Ecrire un message privé
Commentaire sur cette source (1)
Ajouter un commentaire et/ou une note

 Description

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

  • // 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;
  • }
// 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;
}
  



 Sources du même auteur

L'INFORMATIQUE AU SECOURS DES MATHS
Source avec Zip ORDINATEUR DEVIN

 Sources de la même categorie

Source avec Zip UN EXAMPLE D'APPLICATION EN CUDA DE L'ALGORITHME DE SCAN POU... par oguzaras
Source avec Zip Source avec une capture CHIFFREMENT DE VIGENERE par lajouad
Source avec Zip Source avec une capture ANALYSE SYNTAXIQUE par lajouad
Source avec Zip Source avec une capture STRUCTURE D'UNE MATRICE PAR LES LISTE LINÉAIRE (NON CONTUGUS... par benzarabel
Source avec Zip Source avec une capture DESSINER UNE ARBRE BINAIRE( MODE CONSOLE): par benzarabel

Commentaires et avis

Commentaire de TheSaib le 31/08/2002 15:27:50 administrateur CS

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
++

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales