Ir ao conteúdo
  • Cadastre-se

Estou com duvidas em montar esse programa em Pascal


Penelope_21

Posts recomendados

Boa Tarde!!!

Gostaria de uma ajudinha para construir esse programinha em Pascal q meu professor pediu... Estou sentindo muita dificuldade...Se alguem puder me ajudar ficaria agradeçida... Desde ja... Obrigada a todos!! :)

Construa um programa em Pascal para validar datas entradas pelo usuário, no

padrão String. O formato de entrada é “DD/MM/AAAA”. O sistema deve checar

se as datas inseridas pelo usuário são válidas. Ou seja, checar se o referido mês

existe, e se o número de dias para o mês está correto. Por exemplo, datas como

“30/02/2008” ou “40/13/2007” devem ser acusadas como inválidas e o usuário

deve ser informado do erro. Além disso, o programa não deve aceitar datas

abaixo de 1910 e acima de 2020.

:confused::confused::confused::confused::confused::confused::confused:

Link para o comentário
Compartilhar em outros sites

Olá,

Toda lógica de programação é meio controversia(cada um pensa de um jeito graças a Deus). Sugiro que você comece a validar o ano.

Ex:

{ fazendo a string auxiliar data receber o valor contido no ano }

ano := copy( Data, 7, 4 );

{ convertendo a string ano para um valor numerico }

val( ano, anoNumerico, erro );

{ comparando para verifica se o ano e valido }

if (( anoNumerico >= 1910 ) and ( anoNumerico <= 2020 ) )then { verifica o mes }

begin

{ fazendo a string auxiliar data receber o valor contido no mes }

mes := copy( Data, 4, 2 );

{ convertendo a string mes para um valor numerico }

val( mes, mesNumerico, erro );

{ iniciando o conjunto }

conj := [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ];

{ Verificando se o mes esta contido no conjunto mes }

if( mesNumerico in conj ) then { verifica o dia }

begin

{ fazendo a string auxiliar data receber o valor contido no dia }

dia := copy( Data, 1, 2 );

{ convertendo a string dia para um valor numerico }

val( dia, diaNumerico, erro );

case mesNumerico of

1,3,5,7,8,10,12 : if(( diaNumerico >= 1 ) and( diaNumerico <= 31 )); { meses com 31 }

4,6,9,11 : if(( diaNumerico >= 1 ) and( diaNumerico <= 30 )); { meses com 31 }

2 : { mes de Fevereiro .}

begin

if ( anoNumerico mod 4) = 0 then

begin

if (( diaNumerico >= 1 ) and ( diaNumerico <= 29)) then { ano bissexto }

end

else if (( diaNumerico >= 1 ) and ( diaNumerico <= 28)) then

end;

end;

end;

--------------------------

Ao meu ver é mais ou menos isso. Tem que testar para ver. Fiz aqui sem compilar nem nada só vendo seu tópico. Testa ai, mas com certeza e por ai.

Abraço e posta ai pra ver se conseguiu.

Link para o comentário
Compartilhar em outros sites

Olá,

Toda lógica de programação é meio controversia(cada um pensa de um jeito graças a Deus). Sugiro que você comece a validar o ano.

Ex:

{ fazendo a string auxiliar data receber o valor contido no ano }

ano := copy( Data, 7, 4 );

{ convertendo a string ano para um valor numerico }

val( ano, anoNumerico, erro );

{ comparando para verifica se o ano e valido }

if (( anoNumerico >= 1910 ) and ( anoNumerico <= 2020 ) )then { verifica o mes }

begin

{ fazendo a string auxiliar data receber o valor contido no mes }

mes := copy( Data, 4, 2 );

{ convertendo a string mes para um valor numerico }

val( mes, mesNumerico, erro );

{ iniciando o conjunto }

conj := [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ];

{ Verificando se o mes esta contido no conjunto mes }

if( mesNumerico in conj ) then { verifica o dia }

begin

{ fazendo a string auxiliar data receber o valor contido no dia }

dia := copy( Data, 1, 2 );

{ convertendo a string dia para um valor numerico }

val( dia, diaNumerico, erro );

case mesNumerico of

1,3,5,7,8,10,12 : if(( diaNumerico >= 1 ) and( diaNumerico <= 31 )); { meses com 31 }

4,6,9,11 : if(( diaNumerico >= 1 ) and( diaNumerico <= 30 )); { meses com 31 }

2 : { mes de Fevereiro .}

begin

if ( anoNumerico mod 4) = 0 then

begin

if (( diaNumerico >= 1 ) and ( diaNumerico <= 29)) then { ano bissexto }

end

else if (( diaNumerico >= 1 ) and ( diaNumerico <= 28)) then

end;

end;

end;

--------------------------

Ao meu ver é mais ou menos isso. Tem que testar para ver. Fiz aqui sem compilar nem nada só vendo seu tópico. Testa ai, mas com certeza e por ai.

Abraço e posta ai pra ver se conseguiu.

Obrigadaaa!!! vou tentar fazer agorinha aqui!!! valeu mesmo!

Link para o comentário
Compartilhar em outros sites

Ai sem querer ser o Peter Perfeito, rode isso ai e está pronto:

uses crt; { biblioteca onde estão incluidas algumas funcoes usadas }

var

aux : string[ 5 ];

data : string[ 11 ];

anoN, mesN, diaA, diaN, erro : integer;

dataOk : boolean;

conj : set of byte;

begin

write( 'Digite a data: dd/mm/aaaa ' );

readln( data );

dataOk := true;

{ fazendo a string auxiliar receber o valor contido em data }

aux := copy( Data, 7, 4 );

{ convertendo a string aux para em um valor numerico }

val( aux, anoN, erro );

{ comparando para verifica se o ano e valido }

if (( anoN >= 1910 ) and ( anoN <= 2020 ) )then

{ verifica o mes caso o ano for valido }

begin

{ fazendo a string auxiliar receber o valor contido no mes }

aux := copy( Data, 4, 2 );

{ convertendo a string mes para um valor numerico }

val( aux, mesN, erro );

{ iniciando o conjunto }

conj := [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ];

{ Verificando se o mes esta contido no conjunto mes }

if( mesN in conj ) then { verifica o dia }

begin

{ fazendo a string auxiliar receber o valor contido no dia }

aux := copy( Data, 1, 2 );

{ convertendo a string dia para um valor numerico }

val( aux, diaN, erro );

case mesN of

{ meses com 31 }

1,3,5,7,8,10,12 : if(( diaN >= 1 ) and( diaN <= 31 )) then

dataOk := true

else dataOk := false;

{ meses com 31 }

4,6,9,11 : if(( diaN >= 1 ) and( diaN <= 30 )) then

dataOk := true

else dataOk := false;

2 : { mes de Fevereiro .}

begin

if ( anoN mod 4) = 0 then

begin

if (( diaN >= 1 ) and ( diaN <= 29)) then { ano bissexto }

dataOk := true

else dataOk := false;

end else if (( diaN >= 1 ) and ( diaN <= 28)) then

dataOk := true

else dataOk := false;

end;

else dataOk := false;

end;

end else dataOk := false;

end else dataOk := false;

if dataOk then writeln( 'Data valida!' )

else writeln( 'Data invalida!' );

readkey;

end.

Tenta ai.

abraço.

pode rodar que esta certo. feito pra você.

Link para o comentário
Compartilhar em outros sites

Acho este mais simples:

program data;

uses Crt;

var

dia, mes, ano : integer;

begin

write('informe o Dia: ');

readln(dia);

writeln (dia,'/');

write(' informe o Mês: ');

readln(mes);

if (dia > 30) then begin

case mes of

4,6,9,11 :

begin

writeln('');

writeln('----------------------------------------------------');

writeln('data invalida, este mes vai no maximo até 30 dias');

writeln('----------------------------------------------------');

writeln('');

end;

end;

end;

if (dia > 28) then begin

case mes of

end;

2 :

begin

writeln('');

writeln('----------------------------------------------------');

writeln('data invalida, este mes vai no maximo até 28 dias');

writeln('----------------------------------------------------');

writeln('');

end;

end;

end;

writeln (dia,'/', mes, '/');

write('informe o Ano: ');

readln(ano);

writeln (dia,'/', mes, '/', ano);

if (dia > 0) and (dia <= 31) and (mes > 0) and (mes <= 12) and (ano >= 1900) and (ano <= 2007) then begin

writeln('');

writeln('----------------------------------------------------');

writeln (' ',dia,' /', mes, ' /', ano);

writeln('----------------------------------------------------');

end else begin

writeln('');

writeln('----------------------------------------------------');

writeln('data invalida!!!!!!!');

writeln('----------------------------------------------------');

writeln('');

end;

end.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!