Leia uma data de nascimento de uma pessoa fornecida através de três números inteiros:Dia,Mês e Ano.Teste a validade desta data para saber se está é uma data válida.Teste se o dia fornecido é um dia válido:dia>0,dia<=28 para o mês de fevereiro(29 se o ano for bissexto),dia <=30 em abril,junho,setembro e novembro ,dia <=31 nos outros meses.Teste a validade do mês:mês>0 e mês<13.Teste a validade do ano:ano<= ano atual(use uma constante definida com o valor igual a 2017).Imprimir:"data valida"ou "data invalida" no final da execução do programa.
Espero que ajude, resolvi usando um vetor de 12 posiçoes para armazenar os dias de cada mês e facilitar o teste de validade.
Usei um operador ternário para determinar os dias do mes de fevereiro caso seja bisexto (ano%4==0)?29:28; assim se o ano for bisexto no vetor eu troco a posição 1(fevereiro) para 29 ou 28 dias.
ai é so comparar se o diaMes[mes-1] por que o vetor inicia de 0 com o valor da variavel dia passada pelo usuário, se for menor ou igual ao valor armazenado no vetor é valido.
/*
* File: main.cpp
* Author: joao
* Leia uma data de nascimento de uma pessoa fornecida através de três números inteiros:Dia,Mês e Ano.
* Teste a validade desta data para saber se está é uma data válida.
* Teste se o dia fornecido é um dia válido:
* dia>0,dia<=28 para o mês de fevereiro(29 se o ano for bissexto),dia <=30 em
* abril,junho,setembro e novembro ,
* dia <=31 nos outros meses.
* Teste a validade do mês:mês>0 e mês<13.
* Teste a validade do ano:ano<= ano atual(use uma constante definida com o valor igual a 2017).
* Imprimir:"data valida" ou "data invalida" no final da execução do programa.
*/
#include <stdlib.h>
#include<stdio.h>
#define ATUAL 2017
using namespace std;
int main(int argc, char** argv) {
int diasMes[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int dia, mes, ano;
char flag = 0;
printf("\n Entre com a data:");
printf("\n Dia:");
scanf("%d", &dia);
printf("\n Mes:");
scanf("%d", &mes);
printf("\n Ano:");
scanf("%d", &ano);
diasMes[1] = (ano % 4 == 0) ? 29 : 28;
if (ano > 0 && ano <= ATUAL) {
if (mes > 0 && mes <= 12 && dia > 0 && dia <= 31) {
if (dia<=(diasMes[mes - 1]) ) {
flag = 1;
}
}
} else {
printf("Ano [%d] não é valido.", ano);
}
printf("A data [%2d/%2d/%4d] é uma data [%s]\n", dia, mes, ano, (flag) ? "valida" : "invalida");
}
Para escrever sua resposta aqui, entre ou crie uma conta
Compartilhar