urgenteeee preciso de ajudaaa!!
3. Escreva um algoritmo em linguagem C que leia uma data qualquer (dia,
mês e ano) e calcule a data do próximo dia. Lembre-se que em anos
bissextos o mês de fevereiro tem 29 dias. O algoritmo deve informar caso
a data seja inválida.
Soluções para a tarefa
Resposta:
#include <stdio.h>
#include <stdlib.h>
/**
Escreva um algoritmo em linguagem C que leia uma data qualquer (dia,
mês e ano) e calcule a data do próximo dia. Lembre-se que em anos
bissextos o mês de fevereiro tem 29 dias. O algoritmo deve informar caso
a data seja inválida.
**/
//mes[12]={31,28,31,30,31,30,31,31,30,31,30,31}
int main(){
int dia, diamax, proxdia;
int mes, mesmax, proxmes;
int ano, proxano;
int i;
printf("Digite a data no formato (d/m/aaaa)\n");
printf("dia: ");
scanf("%i",&dia);
if(dia > 31 || dia < 1){
system("cls");
printf("\tOpcao invalida!\n\tTente novamente.\n\n");
return main();
}
printf("mes: ");
scanf("%i",&mes);
if(mes > 12 || mes < 1){
system("cls");
printf("\tOpcao invalida!\n\tTente novamente.\n\n");
return main();
}
printf("ano: ");
scanf("%i",&ano);
if(ano < 0){
system("cls");
printf("\tOpcao invalida!\n\tTente novamente.\n\n");
return main();
}
system("cls");
mesmax = 12;
proxano = ano; //PróximoAno recebe inicialmente o valor de ano
proxmes = mes; //PróximoMês recebe inicialmente o valor de mes
if(dia < diamax){
proxdia = dia +1;
}
if(mes == 3 || mes == 6 || mes == 9 || mes == 11){
diamax = 30;
if(mes == 1 || mes == 4 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12){
diamax = 31;
}//
if(dia > diamax){
system("cls");
printf("\tOpcao invalida!\n\tTente novamente.\n\n");
return main();
}
}
if(ano % 400==0 || ano % 4== 0 && ano % 100 != 0){ //ano bissextos
if(mes == 2){
diamax = 29;
}// if-if
}
if(mes == 2){
diamax = 28;
if(ano % 400 == 0 || ano % 4 == 0 && ano % 100 != 0){ //ano bissextos
diamax = 29;
}//if-if
if(dia > diamax){
system("cls");
printf("\tOpcao invalida!\n\tTente novamente.\n\n");
return main();
}//if-if-if
}//if
if(dia == diamax){
proxmes = mes+1;
proxdia = (dia - dia) +1;
}
if(dia == diamax && mes == mesmax){
proxano = ano +1;
proxmes = (mes - mes) +1;
proxdia = (dia - dia) +1;
}
printf("A proxima data sera': %d/%d/%d\n", proxdia, proxmes, proxano);
return 0;
}
Explicação:
Deu um trabalinho pra fazer e rodar sem erros mas foi bacana o desafio.