Informática, perguntado por deboramota0304, 6 meses atrás

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

Respondido por gabrielstuchi22
2

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.

Perguntas interessantes