• Matéria: Informática
  • Autor: sgajge
  • Perguntado 3 anos atrás

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.


phtosta99: Cade os exemplos?
sgajge: Entrada via teclado: 29/02/2020 ENTER
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

respondido por: phtosta99
1

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;

}


sgajge: Obrigadaaaa
Perguntas similares