Preciso em programação C —Urgente
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. Veja alguns exemplos de entrada e saída de dados a partir da execução do programa.
Saída via monitor de vídeo: 01/03/2020
Entrada via teclado: 31/12/2021 ENTER
Saída via monitor de vídeo: 01/01/2022
Entrada via teclado: 29/02/2021 ENTER
Saída via monitor de vídeo: Opção Inválida
Resto da questão
Respostas
Resposta:
Explicação:
#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;
}