Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ggbh

Intervalo entre datas

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.