• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

marco_iku

Verificar tipos de variáveis

10 mensagens neste tópico

Bom dia a todos, queria verificar se a variável horas é um numero inteiro e não uma string. Se alguém me pudesse ajudar agradeço.

Program seg; 
Var horas: Integer; 

Begin
writeln('Indique as horas?');
readln(horas); 
End.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Ele só irá alocar as horas caso sejam do formato integer. Se introduzires um caracter ele vai dar erro..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas eu não quero que de erro, quero que diga ao utilizador que o que introduziu não é válido e peça novamente as horas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não existe nenhuma função Pascal para fazer isso, no entanto é capaz de existir isso algures numa biblioteca...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não sei se existe ou não uma função para tal, mas é fácil, basta fazeres uma verificação do tipo:

if(horas < 0 or horas > 24) then
Begin
writeln('erro');
...
...
End;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu não sei Pascal (isto é, já me esqueci de tudo o que aprendi), mas se queres dizer ao utilizador que "Quatro horas da tarde" é uma resposta inválida não podes fazer o readln() para um integer; tens de fazer para uma string e validar a string.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado a todos, como não existe nenhuma função para verificar automaticamente a entrada (sem recorrer às condições), vou fazer como disse o TheGlorious mas o que eu quero fazer não é com o limite de 24 mas percebi a ideia. Obrigado ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas.

Se fizeres como tens no inicio o usuario quando for introduzir as horas se colocar 1 caracter a funçao Readln sabe que so pode aceitar valores

do tipo integer e entao nao aceita, mas nao da erro, so nao o vai ler.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Claro que existe!

umas das formas de tu validares é receberes o valor em string, depois usas uma função chamada Val para converter de string para integer, se der erro é porque o input do utilizador teve caracteres não permitido ex: 12d mas se foi permitido é porque o input é só números.

e depois é que podes fazer a dita validaçao dos numeros:

if(horas < 0 or horas > 24) then
Begin
writeln('erro');
...
...
End;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Claro que existe!

umas das formas de tu validares é receberes o valor em string, depois usas uma função chamada Val para converter de string para integer, se der erro é porque o input do utilizador teve caracteres não permitido ex: 12d mas se foi permitido é porque o input é só números.

e depois é que podes fazer a dita validaçao dos numeros:

if(horas < 0 or horas > 24) then
Begin
writeln('erro');
...
...
End;

Desconhecia e pensava que não existia. Para o programa que estava a fazer já não me serve já o entreguei. mas obrigado pode ser que me ajude no futuro

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora