Bonjour, j'ai un problème dans le codage d'un calendrier annuel en C++. Voila mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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<<"";
   		}
}
Je sais , c'est un peu mal organisé pour l'instant, mais j'aimerais savoir comment régler mon problème pour que cela s'affiche correctement. Merci