Você está aqui: C ::: Desafios e Lista de Exercícios Resolvidos ::: Data e Hora |
Escreva um programa C para ler uma data no formato DD/MM/YYYY e informar se a data é válida ou não, considerando o caso do ano bissexto - Desafio de Programação Resolvido em CQuantidade de visualizações: 729 vezes |
Pergunta/Tarefa: Escreva um programa C para ler uma data no formato DD/MM/YYYY e informar se a data é válida ou não, considerando o caso do ano bissexto e a quantidade de dias máximos para cada mês. Sua saída deve ser parecida com: Informe a data no formato DD/MM/YYYY: 29/02/2024 A data informada é válida. Veja a resolução comentada deste exercício usando C console: #include <stdio.h> #include <stdlib.h> #include <locale.h> int main(int argc, char *argv[]){ int dia, mes, ano; // para guardar o dia, mês e ano int dias_meses[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int valido = 0; // vamos supor que seja inválida já na saída setlocale(LC_ALL,""); // para acentos do português // vamos ler a data no formato 28/05/2019 printf("Informe a data no formato DD/MM/YYYY: "); scanf("%i/%i/%i", &dia, &mes, &ano); // o primeiro passo é testar se o ano é bissexto ou não if(ano % 400 == 0 || (ano % 100 != 0 && ano % 4 == 0)){ dias_meses[1] = 29; // ajustamos o mês de fevereiro } // vamos testar se o ano é válido if(ano >= 1900 && ano <= 9999){ // aqui nós testamos o mês if(mes >= 1 && mes <= 12){ // e finalmente testamos a validade do dia if(dia >= 1 && dia <= dias_meses[mes - 1]){ valido = 1; // data válida } } } if(valido){ printf("\nA data informada é válida.\n"); } else{ printf("\nA data informada NÃO é válida.\n"); } printf("\n\n"); system("pause"); return 0; } |
![]() |
Mais Desafios de Programação e Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |