Ir ao conteúdo

duvida em pascal


tremelique

Posts recomendados

Postado

Eu queria tira uma duvida em relação ao um programa em pascal que ao executa o numero negativo ele para e informa maior e menor numero positivo dado.pois eu to fazendo e o menor ta dando numero negativo ,onde posso esta errando?

aqui esta o código:


Uses crt;
var
cont,n, maior, menor : integer;
fim:boolean ;

begin


Fim := false;
maior :=0 ;
cont:=0;
menor:= 0;

writeln(output,' Digite valores, para terminar a execuçao insira um numero negativo.');
While not Fim do
begin
write(output, 'Digite um valor: ');
readln(input, n);
if n < 0 then
Fim := true
else

cont:=cont+ 1;

begin

begin
if n > maior then


maior := n


else


if n < menor then

menor:=n;


end;

end;






end;

begin


writeln(output, 'O maior valor : ', maior );

writeln(output, 'O menor valor : ', menor);

end;
readln;
end.
end;
program p (input{teclado}, output{video});

Desde já obrigado!

  • Membro VIP
Postado

1) Resultado com número negativo

[...]ao executa o numero negativo ele para e informa maior e menor numero positivo dado.
pois eu to fazendo e o menor ta dando numero negativo ,onde posso esta errando?

aqui esta o código:

Compare uma citação com a outra... :D

2) Código desnecessário

Você está usando alguns begin/end sem necessidade... abaixo seu código corrigido desta questão...

[color=#0000ff]PROGRAM[/color] [color=#ff0080]p[/color] [color=#000000]([/color]input[color=#008000]{teclado}[/color][color=#000000],[/color] output[color=#008000]{video}[/color][color=#000000]);[/color]
[color=#0000ff]uses[/color]
CRT[color=#000000];[/color]
[color=#0000ff]var[/color]
cont[color=#000000],[/color] n[color=#000000],[/color]
maior[color=#000000],[/color] menor [color=#000000]:[/color][color=#0000ff]integer[/color][color=#000000];[/color]
Fim [color=#000000]:[/color][color=#0000ff]boolean[/color][color=#000000];[/color]
[color=#0000ff]BEGIN[/color]
Fim[color=#000000]:=[/color][color=#0000ff]false[/color][color=#000000];[/color]
maior[color=#000000]:=[/color][color=#ff8000]0[/color][color=#000000];[/color]
cont[color=#000000]:=[/color][color=#ff8000]0[/color][color=#000000];[/color]
menor[color=#000000]:=[/color][color=#ff8000]0[/color][color=#000000];[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color]output[color=#000000],[/color][color=#a31515]' Digite valores, para terminar a execuçao insira um numero negativo.'[/color][color=#000000]);[/color]
[color=#0000ff]while[/color] [color=#0000ff]not[/color] Fim [color=#0000ff]do[/color]
[color=#0000ff]begin[/color]
[color=#ff0080]write[/color][color=#000000]([/color]output[color=#000000],[/color] [color=#a31515]'Digite um valor: '[/color][color=#000000]);[/color]
[color=#ff0080]readln[/color][color=#000000]([/color]input[color=#000000],[/color] n[color=#000000]);[/color]
[color=#0000ff]if[/color] n [color=#000000]<[/color] [color=#ff8000]0[/color] [color=#0000ff]then[/color]
Fim[color=#000000]:=[/color][color=#0000ff]true[/color]
[color=#0000ff]else[/color]
cont[color=#000000]:=[/color]cont[color=#000000]+[/color][color=#ff8000]1[/color][color=#000000];[/color]
[color=#008000]{begin}[/color] [color=#008000]//NÃO TEM NECESSIDADE (PODE APAGAR ESSE LINHA)[/color]
[color=#008000]{begin}[/color] [color=#008000]//NÃO TEM NECESSIDADE (PODE APAGAR ESSE LINHA)[/color]
[color=#0000ff]if[/color] n [color=#000000]>[/color] maior [color=#0000ff]then[/color]
maior [color=#000000]:=[/color] n
[color=#0000ff]else[/color]
[color=#0000ff]if[/color] n [color=#000000]<[/color] menor [color=#0000ff]then[/color]
menor[color=#000000]:=[/color]n[color=#000000];[/color]
[color=#008000]{end;}[/color] [color=#008000]//NÃO TEM NECESSIDADE (PODE APAGAR ESSE LINHA)[/color]
[color=#008000]{end;}[/color] [color=#008000]//NÃO TEM NECESSIDADE (PODE APAGAR ESSE LINHA)[/color]
[color=#0000ff]end[/color][color=#000000];[/color]
[color=#008000]{begin}[/color] [color=#008000]//NÃO TEM NECESSIDADE (PODE APAGAR ESSE LINHA)[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color]output[color=#000000],[/color] [color=#a31515]'O maior valor : '[/color][color=#000000],[/color] maior [color=#000000]);[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color]output[color=#000000],[/color] [color=#a31515]'O menor valor : '[/color][color=#000000],[/color] menor[color=#000000]);[/color]
[color=#008000]{end;}[/color] [color=#008000]//NÃO TEM NECESSIDADE (PODE APAGAR ESSE LINHA)[/color]
readln[color=#000000];[/color]
[color=#0000ff]END[/color][color=#000000].[/color]
[color=#008000]{end;}[/color] [color=#008000]//NÃO ESTÁ SENDO USADO (PODE APAGAR ESSE LINHA)[/color]

3) Uso de variável

Para que está servindo a variável cont?

No aguardo.

  • Membro VIP
Postado

1) Código limpo

Apenas removi o desnecessário, mas nada. (Executando esse, tem exatamente o mesmo efeito do código original)


[color=#0000ff]uses[/color]
CRT[color=#000000];[/color] [color=#008000]//Carrega comandos extras como ClrScr, TextColor, ReadKey etc[/color]
[color=#0000ff]var[/color]
n[color=#000000],[/color]
maior[color=#000000],[/color] menor [color=#000000]:[/color][color=#0000ff]integer[/color][color=#000000];[/color]
Fim [color=#000000]:[/color][color=#0000ff]boolean[/color][color=#000000];[/color]
[color=#0000ff]BEGIN[/color]
Fim[color=#000000]:=[/color][color=#0000ff]false[/color][color=#000000];[/color]
maior[color=#000000]:=[/color][color=#ff8000]0[/color][color=#000000];[/color]
menor[color=#000000]:=[/color][color=#ff8000]0[/color][color=#000000];[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color]output[color=#000000],[/color][color=#a31515]' Digite valores, para terminar a execuçao insira um numero negativo.'[/color][color=#000000]);[/color]
[color=#0000ff]while[/color] [color=#0000ff]not[/color] Fim [color=#0000ff]do[/color]
[color=#0000ff]begin[/color]
[color=#ff0080]write[/color][color=#000000]([/color]output[color=#000000],[/color] [color=#a31515]'Digite um valor: '[/color][color=#000000]);[/color]
[color=#ff0080]readln[/color][color=#000000]([/color]input[color=#000000],[/color] n[color=#000000]);[/color]
[color=#0000ff]if[/color] n [color=#000000]<[/color] [color=#ff8000]0[/color] [color=#0000ff]then[/color]
Fim[color=#000000]:=[/color][color=#0000ff]true[/color][color=#000000];[/color]
[color=#0000ff]if[/color] n [color=#000000]>[/color] maior [color=#0000ff]then[/color]
maior[color=#000000]:=[/color]n
[color=#0000ff]else[/color]
[color=#0000ff]if[/color] n [color=#000000]<[/color] menor [color=#0000ff]then[/color]
menor[color=#000000]:=[/color]n[color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color]output[color=#000000],[/color] [color=#a31515]'O maior valor : '[/color][color=#000000],[/color] maior [color=#000000]);[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color]output[color=#000000],[/color] [color=#a31515]'O menor valor : '[/color][color=#000000],[/color] menor[color=#000000]);[/color]
readln[color=#000000];[/color]
[color=#0000ff]END[/color][color=#000000].[/color]
[color=#0000ff]PROGRAM[/color] [color=#ff0080]Maior_e_Menor[/color] [color=#000000]([/color]input[color=#008000]{teclado}[/color][color=#000000],[/color] output[color=#008000]{video}[/color][color=#000000]);[/color]

2) Variável não usada

eu pensei que era nacessario usar o cont para ir chamando os numeros.

Cont é simplesmente uma variável do tipo integer. Nesse caso, assim como qualquer outra variável, não tem correlação com mais nada!!! Simplesmente é um "espaço na memória que é capaz de armazenar um valor inteiro (interger) e também de ser acessado (pegar o valor de lá)". Ou seja, podendo ser usada na lógica do seu algoritmo...

O nome dela é Cont, mas se fosse a, num, frase etc ia dar no mesmo... percebe???

3) Menor negativo

em relaçao o que você mandou quando o menor numero continua negativo.

Não entendi!!! Você se refere ao código que enviei? Não mudei nada! (só removi os begins desnecessário - sem efeitos)

Mas em fim.. o que eu sugeri foi para você comparar essas citações, ou seja, você não achou uma boa coincidência de você "executar um número negativo" e no final "ta dando o mesmo número negativo" ??? :D

Resumidamente, você está também verificando esse valor negativo se é maior ou menor, mas não deveria. Esse valor serve somente para "finalizar", e não deve ser computado.

Abaixo um exemplo de solução:


[color=#0000ff]uses[/color]
CRT[color=#000000];[/color] [color=#008000]//Carrega comandos extras como ClrScr, TextColor, ReadKey etc[/color]
[color=#0000ff]var[/color]
n[color=#000000],[/color]
maior[color=#000000],[/color] menor [color=#000000]:[/color][color=#0000ff]integer[/color][color=#000000];[/color]
Fim [color=#000000]:[/color][color=#0000ff]boolean[/color][color=#000000];[/color]
[color=#0000ff]BEGIN[/color]
Fim[color=#000000]:=[/color][color=#0000ff]false[/color][color=#000000];[/color]
maior[color=#000000]:=[/color][color=#ff8000]0[/color][color=#000000];[/color]
menor[color=#000000]:=[/color][color=#ff8000]0[/color][color=#000000];[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color]output[color=#000000],[/color][color=#a31515]' Digite valores, para terminar a execuçao insira um numero negativo.'[/color][color=#000000]);[/color]
[color=#0000ff]while[/color] [color=#0000ff]not[/color] Fim [color=#0000ff]do[/color]
[color=#0000ff]begin[/color]
[color=#ff0080]write[/color][color=#000000]([/color]output[color=#000000],[/color][color=#a31515]'Digite um valor: '[/color][color=#000000]);[/color]
[color=#ff0080]readln[/color][color=#000000]([/color]input[color=#000000],[/color] n[color=#000000]);[/color]
[color=#0000ff]if[/color] n [color=#000000]<[/color] [color=#ff8000]0[/color] [color=#0000ff]then[/color] [color=#008000]//SE SIM, MARCA PARA FINALIZAR[/color]
Fim[color=#000000]:=[/color][color=#0000ff]true[/color]
[color=#0000ff]else[/color]
[color=#0000ff]begin[/color] [color=#008000]//Veja que esse begin está logo após o else!!! Logo, até chegar no seu[/color]
[color=#008000]//end, tudo aqui dentro só vai ser executado se o if desse else for falso[/color]
[color=#0000ff]if[/color] n [color=#000000]>[/color] maior [color=#0000ff]then[/color]
maior[color=#000000]:=[/color]n
[color=#0000ff]else[/color]
[color=#0000ff]if[/color] n [color=#000000]<[/color] menor [color=#0000ff]then[/color]
menor[color=#000000]:=[/color]n[color=#000000];[/color]
[color=#0000ff]end[/color][color=#000000];[/color] [color=#008000]//fim begin else[/color]
[color=#0000ff]end[/color][color=#000000];[/color] [color=#008000]//fim while[/color]

[color=#ff0080]writeln[/color][color=#000000]([/color]output[color=#000000],[/color] [color=#a31515]'O maior valor : '[/color][color=#000000],[/color] maior [color=#000000]);[/color]
[color=#ff0080]writeln[/color][color=#000000]([/color]output[color=#000000],[/color] [color=#a31515]'O menor valor : '[/color][color=#000000],[/color] menor[color=#000000]);[/color]
readln[color=#000000];[/color]
[color=#0000ff]END[/color][color=#000000].[/color]
[color=#0000ff]PROGRAM[/color] [color=#ff0080]Maior_e_Menor[/color] [color=#000000]([/color]input[color=#008000]{teclado}[/color][color=#000000],[/color] output[color=#008000]{video}[/color][color=#000000]);[/color]

Analise o código e dê continuidade..

No aguardo.

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...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!