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
| #include <iostream>
#include <string>
#include <iomanip>
#include <stdlib.h>
using namespace std;
int main()
{
int month;
int row = 0;
int column = 0;
int weeknum;
int startday;
bool nmonth;
int year,k,j,h;
int daysinyear=365;
int daymonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};
string months[12]={"Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre"};
string dates[18][28]{" "};//Mon tableau représentant tous l'année au complet avec des blancs partout.
cout << "Veuillez entrer l'annee pour laquelle vous voulez afficher un calendrier annuel: ";
cin >> year;
if(year%4==0&&year%100!=0||year%400==0)
{
daymonth[1] = 29;
daysinyear=366;
}
cout << endl <<endl;
for(int p=1; p!=12 ;p++)
{
month=p;
nmonth=true;
for (int i = 1; i <= daymonth[p-1]; i++)
{
if(month == 1)
{
month = 13;
year--;
}
if (month == 2)
{
month = 14;
year--;
}
k = year % 100;
j = year / 100;
h = i + 13*(month+1)/5 + k + k/4 + j/4 + 5*j;
h = h % 7;
char tmp [33];//Buffer pour la conversion de la date en string pour le calendrier (string permet d'afficher des blancs)
if (nmonth=true)//Est-ce que nous avons débuté un nouveau mois?
{
startday = h;//Enregistrons donc le jour de la semaine du 1er
}
weeknum = (i - 1 + startday)/7;//Comme expliqué plus haut, permet de calculer le numéro de la semaine dans le mois
row = (p/4*6) + weeknum;//Calcul de rang, Division entière du mois donc 0 1 2 multiplié par 6 pour avoir l'espace pour mes 6 semaines/mois
column = (p%4*7) + h;//Calcul de la colonne, Modulo de mois donc 0 1 2 3 multiplié par 7 pour avoir l'espace pour mes 7 jours/semaine
itoa(i, tmp, 10);
dates[row][column] = tmp;
cout << "\nValeur de chaque variable: " << endl;
cout << tmp <<","<< h <<","<< p<<","<< weeknum <<","<< row <<","<< column;
nmonth=false;
}
}
int monthnamemod = 0;//Permet d'itérer par tranche de 4 dans l'array des noms de mois
string week = "D L M M J V S ";
for (int i = 0; i < 18; i++)
{
if (i%6==0)//Si début d'une nouvelle rangée de 4 mois
{
cout<<left<<setw(24)<<endl<<months[monthnamemod * 4]<<setw(24)<<months[monthnamemod * 4+1]<<setw(24)<<months[monthnamemod * 4+2]<<setw(24)<<months[monthnamemod * 4+3]<<endl<<endl;
monthnamemod++;
cout<<left<<setw(3)<<week<<setw(3)<<week<<setw(3)<<week<<setw(3)<<week<<endl;
}
for (int j = 0; j < 28; j++)
{
cout<<left<<setw(3)<<dates[i][j];
if (j%7==6)//Si fin d'une semaine
{
cout<<left<<setw(3)<<"";
}
}
cout<<endl<<"";
}
} |
Partager