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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135
|
#include <iostream>
#include <math.h>
#include <string.h>
using namespace std;
int annee, mois, jour;
int jr, bissextile, difference, decalage, choix;
int somme = 0, total = 0;
int nom_jr, position, position2;
char day[2];
char month[2];
char year[4];
char date[11];
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()
{
cout << "Entrez une date après le premier janvier 1900 sous la forme jj,mm,aaaa" << endl;
cin >> date;
for(int i = 0; i <= strlen(date); i++)
{
if(date[i] == 44) /* ... 44 est le code ASCII de la virgule ',' ... */
position = i; /* ... On mémorise l'emplacement de la première virugle ',' ... */
for(int j = position; j <= strlen(date); j++)
{
if(date[i] == 44) /* ... 44 est le code ASCII de la virgule ',' ... */
position2 = i; /* ... On mémorise l'emplacement de la seconde virugle ',' ... */
}
}
/* ... On sépare la chaîne de caractères en jour, mois année dans 3 chaînes distinctes ... */
for (int k = 0; k < position; k++)
{
day[k] = date[k];
}
for(int l = position; l < position2; l++)
{
month[l-position] = date[l+1];
}
for(int m = position2; m <= strlen(date); m++)
{
year[m-position2] = date[m+1];
}
/* ... On convertit les chaînes de caractères en entiers ... */
jour = atoi(day);
mois = atoi(month);
annee = atoi(year);
/* ... Savoir si l'annee est bissextile ... */
if((annee - 1900) % 4 == 0)
bissextile = 1;
else
bissextile = 0;
tab_duree[1] = 28 + bissextile;
/* ... ... */
/* ...
Référence choisie : l'année 2000 qui est bissextile et dont le premier
janvier tombait un samedi.
... */
/* ...
Déterminer le jour de la semaine correspondant au premier janvier d'une
année quelconque après le premier janvier 1900
... */
difference = annee - 1900;
decalage = difference + (difference / 4); /* ... On tient compte du nombre d'années bissextiles ... */
jr = (decalage % 7) - 1; /* ... Lundi = 1, mardi = 2, etc... Ici le premier janvier 2000 était un samedi donc 6 ... */
if(jr == 0)
jr = 7;
cout << "Le premier janvier de l'annee choisie est un: " << semaine[jr-1] << endl;
/* ...
Dans la date entrée, compter le nombre de jours écoulés du premier janvier jusqu'au jour
de l'année voulu et en déduire alors le jour de la semaine correspondant.
... */
for(int n = 0; n < 12; n++)
{
if(n < mois - 1)
tab_aux[n] = 1;
else
tab_aux[n] = 0;
}
for(int o = 0; o < 12; o++)
somme = somme + tab_duree[o] * tab_aux[o]; /* ... mois entiers précédant le mois choisi ... */
total = somme + jour - 1;
jr = jr + total % 7;
nom_jr = jr % 7;
if(nom_jr == 0)
nom_jr = 7;
cout << "La date choisie etait un : " << semaine[nom_jr - 1] << endl;
cout << "Voulez-vous continuer sur ce programme ?" << endl << "Si oui tapez 1" << endl << "Si non tapez 0" << endl << endl;
cin >> choix;
switch(choix)
{
case 0:
break;
case 1:
main();
break;
}
//system("PAUSE");
} |
Partager