ggbh 0 Denunciar post Postado Novembro 25, 2008 Pessoal o programa abaixo cálcula o intervalo entre dadas. você pode dar uma opinião onde ele pode estar errado. thanks a lot . #include<conio.h> #include<iostream.h> struct Data { int dia, mes, ano; }; const int Num_Meses = 13; class CalculadorDeDias { short diaDoMes [Num_Meses]; void inicializaDiasDoMes () { diaDoMes[0] = 00; //Valor recebe zero para nao atrapalhar a soma, //o indice 1 passa a ser janeiro para ficar coerente. diaDoMes[1] = 31; // Janeiro. diaDoMes[2] = 28; // Fevereiro. diaDoMes[3] = 31; // Março. diaDoMes[4] = 30; // Abril. diaDoMes[5] = 31; // Maio. diaDoMes[6] = 30; // Junho. diaDoMes[7] = 31; // Julho. diaDoMes[8] = 31; // Agosto. diaDoMes[9] = 30; // Setembro. diaDoMes[10] = 31; // Outubro. diaDoMes[11] = 30; // Novembro. diaDoMes[12] = 31; // Dezembro. } public: int numeroDeDias (const Data& dataInicial, const Data& dataFinal) { inicializaDiasDoMes(); int diasMesesInteiros, diasMesesPicados; // as duas funções abaixo você faz. diasMesesInteiros = contaDiasMesesInteiros (dataInicial, dataFinal); diasMesesPicados = contaDiasMesesPicados (dataInicial, dataFinal); return ( diasMesesInteiros + diasMesesPicados ); } int contaDiasMesesInteiros (Data dataInicial, Data dataFinal) { int cont; int soma = 0; for (cont = dataInicial.mes + 1; cont <= dataFinal.mes - 1; cont++) soma = soma + diaDoMes[cont - 1]; return(soma); } int contaDiasMesesPicados(Data dataInicial, Data dataFinal) { int soma = 0; if (dataInicial.mes == dataFinal.mes) soma = dataFinal.dia - dataInicial.dia; else { soma = diaDoMes[dataInicial.mes - 1] - dataInicial.dia; soma = soma + (dataFinal.dia - 1); } return(soma); } }; void main() { Data dataInicial; Data dataFinal; cout << "Informe o dia inicial: "; cin >> dataInicial.dia; cout << "Informe o mes inicial: "; cin >> dataInicial.mes; cout << "Informe o ano inicial: "; cin >> dataInicial.ano; cout << "Informe o dia final: "; cin >> dataFinal.dia; cout << "Informe o mes final: "; cin >> dataFinal.mes; cout << "Informe o ano final: "; cin >> dataFinal.ano; cout << "A data inicial e: " << dataInicial.dia <<"/" <<dataInicial.mes <<"/" <<dataInicial.ano <<"\t\n"; cout << "A data final e: " << dataFinal.dia <<"/" <<dataFinal.mes <<"/" << dataFinal.ano; CalculadorDeDias calendario; cout << "O intervalo de sera de " << calendario.numeroDeDias( dataInicial, dataFinal ) << "dias"; getch(); } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Novembro 25, 2008 void main() É int main. #include <ctime> #include <cstring> #include <iostream> using namespace std; class Calendar { char format[8]; struct tm dataInicial, dataFinal; long double SEGUNDOS; long double diferenca () { time_t T1 = mktime(&dataInicial); time_t T2 = mktime(&dataFinal); return (long double)difftime(T2,T1); } public: Calendar() { strcpy(format,"%d/%m/%Y"); SEGUNDOS = 24*60*60; } void getDataInicial(const char C[255]) { strptime(C,format,&dataInicial); dataInicial.tm_sec = dataInicial.tm_min = 0; dataInicial.tm_hour = 0; } void getDataFinal(const char C[255] ) { strptime(C,format,&dataFinal); dataFinal.tm_sec = dataFinal.tm_min = 0; dataFinal.tm_hour = 0; } long converte() { long double segundos = diferenca(); return ( (segundos < 0)? 0 : (long)(segundos/SEGUNDOS)+1); } }; int main() { char buffer[255]; Calendar tempo; cout << "Digite a data Inicial (DD/MM/AAAA):"; cin >> buffer; tempo.getDataInicial(buffer); cout << "Digite a data Final (DD/MM/AAAA):"; cin >> buffer; tempo.getDataFinal(buffer); cout << "\n" << tempo.converte() << " dias"; } Compartilhar este post Link para o post Compartilhar em outros sites