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

JoaoRodrigues

Identificar tipo

17 mensagens neste tópico

Tenho um programa e como verificação de erros quero que ele me verifique se uma dada variável é do tipo real. Como posso fazer isto?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

as variáveis és tu que as declaras  :)

queres saber o valor que elas contem?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não, nada disso.

Tenho um valor de uma concentração que é obviamente um real. Mas quero que haja uma verificação do género: Se for um real maior que 0, processa o valor, senão, dá erro e repete a pergunta para pedir a variavel.

Isto é possivel?

É que o programa que estou a desenvolver pode tornar-se verdadeiramente grande quando usado em escala laboratorial para mts valores e pa... se um gajo se engana no valor 30 :) tem k repetir todos? percebes agora o que eu quero fazer?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não faço a mais pequena ideia da sintaxe em pascal mas podes colocar o pedido do valor dentro de um while e validares se o valor é positivo, ou melhor, enquanto for negativo repete.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, isso já está implementado mas oque me dava mesmo jeito era contrariar erros tipo inserção de letras..

Enfim, grato pela atenção pessoal! se alguem souber de uma maneira, avisem :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes postar o codigo aqui? era mais facil para eu te ajudar... :)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Continuo sem saber a sintaxe, mas por ex. em C a função scanf devolve 1 se o valor for do tipo esperado e 0 se não for, em pascal deve existir algo parecido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é em pascal :/

pelo menos eu suponho que seja, uma vez que este topico está na parte relativa ao pascal ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu o código podia postar, mas não vos leva a lado nenhum acho eu :)

Pensei então noutra situação. Posso converter chars em inteiros certo? Através do ord(x)-(ord0) sei o valor inteiro da varivel X. E com um ciclo simples consigo de certeza construir o numero se ele for de mais digitos. Agora o meu problema é: consigo converter char em real? Quero números do tipo 0.025 e 0.175. Posso ler o numero como se fosse um char e passar a real?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes ler como se fosse uma string, e depois passar para real. Não sei é as funções que tens que usar...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

agora que tive a reler melhor o teu post, tu queres verificar se o valor introduzido está entre uma gama de valores e depois pede outra x o mesmo valor caso esteja ma?

eu pedi para postares o código para ver se eu percebia melhor o que pretendias...

quanto a isso de converter uma string em real, n sei se existe alguma coisa para isso... procura no google

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

agora que tive a reler melhor o teu post, tu queres verificar se o valor introduzido está entre uma gama de valores e depois pede outra x o mesmo valor caso esteja ma?

Basicamente, sim. Mas a "gama de valores" é entre 0 e infinito, desde que sejam números reais... eu posso usar um while tipo isto:

readln(x);
while x<0 do
begin
writeln('Dado inváldo, introduzir de novo');
readln(x);
end;

Aliás, é parecido com o que tenho.

O que eu queria mesmo era algo do género:

readln(x);
while x not real do
begin
writeln('Dado inváldo, introduzir de novo');
readln(x);
end;

O meu problema está na função ou código que me faça o teste "x not real", porque se eu digitar algo tipo 0,98 e não, 0.98 dá erro porque a "," é um char ...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

rgcaldas, não  :) do tipo declaras uma var do tipo real ... se em vez de meteres 0.98 metes 0,98 o programa "crasha" logo... :s

anaryin, não estou a ver como fazer isso  :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bom nesse código

readln(x);
while x not real do
begin
writeln('Dado inváldo, introduzir de novo');
readln(x);
end;

já tentou usar  "while x <> 0 do ?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

tendo em conta que quero que ele seja diferente de um char, volto ao mesmo, teria que haver uma funçao kk para por x<>real :)

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