a) JAN, MAR, MAI, JUL, AGO, OUT e DEZ podem possuir no máximo 31 dias;
B) ABR, JUN, SET e NOV podem possuir no máximo 30 dias;
c) FEV pode possuir no máximo 29 dias se o ano for bissexto, ou seja, se o resto da divisão do ano por 4 for igual a zero;
d) FEV pode possuir no máximo 28 dias se o ano não for bissexto;
exemplo 1:
digite dia: 20
digite mês: 12
digite ano:2007
você digitou 20/12/2007. é uma data válida
exemplo 2:
digite dia: 31
digite mês: 04
digite ano:2007
você digitou 31/04/2007. não é uma data válida
Uma dúvida:
O meu algoritmo se o usuario digitar uma data válido, exemplo: 31/1/2007 vai imprimir na tela: Data é valida, porem se o usuario digitar 32/1/2007 o comando else não funciona e com isso não imprimi na tela: "writeln" ('Data é inválida!');
OBS.: Até o momento eu não aprendi a trabalhar com Vetor, Matriz, Case.
Obrigado aí galera pela ajuda.
program data_valida;
uses
crt;
procedure leitura (var int_dia, int_mes, int_ano: integer);
begin
writeln ('Programa verifica se a data é válida.');
writeln ('Digite o dia:');
readln (int_dia);
writeln ('Digite o mês:');
readln (int_mes);
writeln ('Digite o ano:');
readln (int_ano);
end;
procedure calculo_imprime (int_dia, int_mes, int_ano: integer);
begin
writeln ('Você digitou:', int_dia,'/',int_mes,'/',int_ano);
if int_dia <= 31 then if int_mes = 1 then if int_ano <= 5000 then
writeln ('Data é válida!!!')
else
writeln ('Data é inválida!');
if int_ano mod 4 = 0 then if int_mes = 2 then if int_dia <= 29 then
writeln ('Data é válida e o ano é Bissexto!!!')
else
writeln ('Data é inválida');
if int_ano mod 4 <> 0 then if int_mes = 2 then if int_dia <= 28 then
writeln ('Data é válida!!!')
else
writeln ('Data é inválida!!!');
if int_dia <= 31 then if int_mes = 3 then if int_ano <= 5000 then
writeln ('Data é válida!!!')
else
writeln ('Data é inválida!');
if int_dia <= 30 then if int_mes = 4 then if int_ano <= 5000 then
writeln ('Data é válida!!!')
else
writeln ('Data é inválida!');
if int_dia <= 31 then if int_mes = 5 then if int_ano <= 5000 then
writeln ('Data é válida!!!')
else
writeln ('Data é inválida!');
if int_dia <= 30 then if int_mes = 6 then if int_ano <= 5000 then
writeln ('Data é válida!!!')
else
writeln ('Data é inválida!');
if int_dia <= 31 then if int_mes = 7 then if int_ano <= 5000 then
writeln ('Data é válida!!!')
else
writeln ('Data é inválida!');
if int_dia <= 31 then if int_mes = 8 then if int_ano <= 5000 then
writeln ('Data é válida!!!')
else
writeln ('Data é inválida!');
if int_dia <= 30 then if int_mes = 9 then if int_ano <= 5000 then
writeln ('Data é válida!!!')
else
writeln ('Data é inválida!');
if int_dia <= 31 then if int_mes = 10 then if int_ano <= 5000 then
writeln ('Data é válida!!!')
else
writeln ('Data é inválida!');
if int_dia <= 30 then if int_mes = 11 then if int_ano <= 5000 then
writeln ('Data é válida!!!')
else
writeln ('Data é inválida!');
if int_dia <= 31 then if int_mes = 12 then if int_ano <= 5000 then
writeln ('Data é válida!!!')
else
writeln ('Data é inválida!');
end;
var
int_dia_g, int_mes_g, int_ano_g: integer;
begin
clrscr;
repeat
leitura (int_dia_g, int_mes_g, int_ano_g);
calculo_imprime (int_dia_g, int_mes_g, int_ano_g);
until int_dia <= 0;
readkey;
end.
Pergunta
Martinsrj
Olá pessoal, tudo bom?
O algoritmo abaixo a seguinte finalidade.
Ler uma data dia, mês e ano
verificar se a data digitada é uma data válida:
a) JAN, MAR, MAI, JUL, AGO, OUT e DEZ podem possuir no máximo 31 dias;
B) ABR, JUN, SET e NOV podem possuir no máximo 30 dias;
c) FEV pode possuir no máximo 29 dias se o ano for bissexto, ou seja, se o resto da divisão do ano por 4 for igual a zero;
d) FEV pode possuir no máximo 28 dias se o ano não for bissexto;
exemplo 1:
digite dia: 20
digite mês: 12
digite ano:2007
você digitou 20/12/2007. é uma data válida
exemplo 2:
digite dia: 31
digite mês: 04
digite ano:2007
você digitou 31/04/2007. não é uma data válida
Uma dúvida:
O meu algoritmo se o usuario digitar uma data válido, exemplo: 31/1/2007 vai imprimir na tela: Data é valida, porem se o usuario digitar 32/1/2007 o comando else não funciona e com isso não imprimi na tela: "writeln" ('Data é inválida!');
OBS.: Até o momento eu não aprendi a trabalhar com Vetor, Matriz, Case.
Obrigado aí galera pela ajuda.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.