calendar with matrix of char

I'm trying to create a calendar with matrix of char, but my method (gera_calendario) for printing numbers isn't correct. Here's my code. Thanks

#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Calendario
{
private:
int ano;
int mes;
int dia;
char tabela[8][35];
int dia_comp;
int mes_comp;
int ano_comp;
string textocompromisso;
public:
void set_ano(void);
void set_mes(void);
void set_dia (int d);
int set_primeiro_dia(void);
char gera_calendario(void);
void gera_matriz(void);
int last_day(void);
void imprime_compromissos(void);
};

void Calendario::set_ano(void)
{
cout << "Digite um ano:" << endl;
cin >> ano;
}

void Calendario::set_mes(void)
{
cout << "Digite o mes:" << endl;
cin >> mes;
}

void Calendario::set_dia(int d)
{
dia=d;
}
int Calendario::set_primeiro_dia(void)
{
int a,y,m,d;
a = (14 - mes) / 12;
y = ano - a;
m = mes + 12*a - 2;
d = (1 + y + y/4 - y/100 + y/400 + 31*m/12) % 7;
return (d);
}

int Calendario:: last_day(void)
{
int numdias[12]={31,28,31,30,31,30,31,31,30,31,30,31};
return numdias [mes-1];
}

void Calendario:: imprime_compromissos(void)
{
set_ano();
set_mes();
// declaracao arquivo de entrada
std::ifstream ArquivoEntrada;
ArquivoEntrada.open ("Compromissos.txt");
cout << endl << endl << "Compromissos:" << endl;
ArquivoEntrada >> dia_comp;
ArquivoEntrada >> mes_comp;
ArquivoEntrada >> ano_comp;
std::getline (ArquivoEntrada,textocompromisso);
while (ano_comp!=ano)
{
ArquivoEntrada >> dia_comp;
ArquivoEntrada >> mes_comp;
ArquivoEntrada >> ano_comp;
std::getline (ArquivoEntrada,textocompromisso);
if (ArquivoEntrada.eof()) break;
}
while (mes_comp!=mes)
{
ArquivoEntrada >> dia_comp;
ArquivoEntrada >> mes_comp;
ArquivoEntrada >> ano_comp;
std::getline (ArquivoEntrada,textocompromisso);
if (ArquivoEntrada.eof()) break;
}
while (mes_comp==mes && ano_comp==ano)
{
cout << dia_comp << "/" << mes_comp << "/" << ano_comp << " - " << textocompromisso << endl;
ArquivoEntrada >> dia_comp;
ArquivoEntrada >> mes_comp;
ArquivoEntrada >> ano_comp;
std::getline (ArquivoEntrada,textocompromisso);
if (ArquivoEntrada.eof()) break;
}
}

void Calendario::gera_matriz (void)
{
int i, j;
for (i=0;i<8;i++)
{
for (j=0;j<35;j++)
{
tabela[i][j]=(char)32;
}
}
}

char Calendario::gera_calendario(void)
{
int x,y,i,j,first,k,ch,sd,fd;
set_ano();
set_mes();
char cabecalho[36]=" Dom Seg Ter Qua Qui Sex Sab ";
string meses[12]={"Janeiro","Feveiro","Marco","Abril","Maio","Junho","Julho","Agosto","Setembro","Outubro","Novembro","Dezembro"};
cout << " "<< meses[mes-1] <<" de "<< ano;
for (y=0;y<35;y++)
{
tabela[1][y]=cabecalho[y];
}
first=set_primeiro_dia();
for(int i=0;i<8;i++)
{
for (int j=0;j<35;j++) tabela [i][j]=32;

}

i=first;
j=1;
for (int dia=1;dia<32;dia++)

{
k=dia+first;
tabela[(5*k)%35][(dia+first+1)/7]=ch;
fd=(int)(dia/10);
sd=dia%10;
if(fd==0)
{
ch=sd+48;
}
else
{
ch=fd;
tabela[(5*k)%35+1][(dia+first+1)/7]=sd;
}

}

for (i=0;i<8;i++)
{
for (j=0;j<35;j++)
{
cout << tabela[i][j];
}
cout << endl;
}

}


int main (void)
{
Calendario calend1;
calend1.gera_matriz();
calend1.gera_calendario();
calend1.imprime_compromissos();
}
Topic archived. No new replies allowed.