chris~ Postado Janeiro 6, 2013 Denunciar Share Postado Janeiro 6, 2013 Gent seguinte, minha professora me passo um trab tenso, ou não sei latenho que calcular a quantidade de dias entre duas datas, essa é a part do trabalho q não consigo fazetipo eu informo duas datas01/01/201331/12/2013e o resultado da conta tem q ser 365 diaso algoritimo tem q leva em consideração os meses de 28,29,30 e 31 dias e não pode ser usado a biblioteca Ifexiste algum comando q possa me ajudar a faze isso mais rapido ou terei q usar milhoes de linhas de codgos? '-'se alguém puder me aponta para uma maneira mais "simples" do que muitas linhas de cod em if por favor me avisaagradeço a atenção Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 roccoC/C++ Postado Janeiro 7, 2013 Denunciar Share Postado Janeiro 7, 2013 (editado) Olá, isto pode ser feito usando uma struct e uma Matriz.Assim:typedef struct { int uma variável para dia; int variável para mes; int variável para ano; } nome da estrutura; e uma matriz para os mêses do ano. int dias_mes [?] [?] = {{ !!!!!!!!! }};É uma dica, o resto é com você.ABRAÇOS Editado Janeiro 7, 2013 por roccoC/C++ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 goldbach Postado Janeiro 7, 2013 Denunciar Share Postado Janeiro 7, 2013 (editado) Gent seguinte, minha professora me passo um trab tenso, ou não sei latenho que calcular a quantidade de dias entre duas datas, essa é a part do trabalho q não consigo fazetipo eu informo duas datas01/01/201331/12/2013e o resultado da conta tem q ser 365 diaso algoritimo tem q leva em consideração os meses de 28,29,30 e 31 dias e não pode ser usado a biblioteca Ifexiste algum comando q possa me ajudar a faze isso mais rapido ou terei q usar milhoes de linhas de codgos? '-'se alguém puder me aponta para uma maneira mais "simples" do que muitas linhas de cod em if por favor me avisaagradeço a atençãoUm pouco de café ... e milhões de linhas de código depois, aí está:#include <stdio.h> // as datas devem estar no formato dd/mm/yyyy int getNumberDays(const char *startDate, const char *endDate) { int month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int startDay; int startMonth; int startYear; int endDay; int endMonth; int endYear; int nDays = 0; startDay = ((startDate[0] & 0xF) * 10) + (startDate[1] & 0xF); startMonth = ((startDate[3] & 0xF) * 10) + (startDate[4] & 0xF); startYear = ((startDate[6] & 0xF) * 1000) + ((startDate[7] & 0xF) * 100) + ((startDate[8] & 0xF) * 10) + (startDate[9] & 0xF); endDay = ((endDate[0] & 0xF) * 10) + (endDate[1] & 0xF); endMonth = ((endDate[3] & 0xF) * 10) + (endDate[4] & 0xF); endYear = ((endDate[6] & 0xF) * 1000) + ((endDate[7] & 0xF) * 100) + ((endDate[8] & 0xF) * 10) + (endDate[9] & 0xF); if(startDay == endDay && startMonth == endMonth && startYear == endYear) return 0; if(!(startYear % 4)) { if(startYear % 100) month[1] = 29; // ano bissesto else if(!(startYear % 400)) month[1] = 29; // ano bissesto } for(;;) { int i; for(i = 1; i < 13; i++) { if(startMonth == i) { if(startDay == month[i - 1]) // se é o ultimo dia do mês { startDay = 1; if(startMonth != 12) { startMonth++; } else // se é o ultimo mês do ano { startMonth = 1; startYear++; if(!(startYear % 4)) { if(startYear % 100) month[1] = 29; // ano bissesto else { if(!(startYear % 400)) month[1] = 29; else month[1] = 28; } } else month[1] = 28; } } else { startDay++; } break; } } nDays++; if(startDay == endDay && startMonth == endMonth && startYear == endYear) return nDays + 1; } } int main() { printf("Days = %d\n", getNumberDays("01/01/2013", "31/12/2013")); return 0; } Editado Janeiro 7, 2013 por goldbach Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 chris~ Postado Janeiro 8, 2013 Autor Denunciar Share Postado Janeiro 8, 2013 muito obrigado pela ajuda genteeu adaptei o codgo do goldbache deu certinhoobrigado mesmo =D Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 goldbach Postado Janeiro 8, 2013 Denunciar Share Postado Janeiro 8, 2013 muito obrigado pela ajuda genteeu adaptei o codgo do goldbache deu certinhoobrigado mesmo =DDisponha. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
chris~
Gent seguinte, minha professora me passo um trab tenso, ou não sei la
tenho que calcular a quantidade de dias entre duas datas, essa é a part do trabalho q não consigo faze
tipo eu informo duas datas
01/01/2013
31/12/2013
e o resultado da conta tem q ser 365 dias
o algoritimo tem q leva em consideração os meses de 28,29,30 e 31 dias e não pode ser usado a biblioteca If
existe algum comando q possa me ajudar a faze isso mais rapido ou terei q usar milhoes de linhas de codgos? '-'
se alguém puder me aponta para uma maneira mais "simples" do que muitas linhas de cod em if por favor me avisa
agradeço a atenção
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.