Ir ao conteúdo
  • Cadastre-se
ricskyred

Problemas na execução da sequência do código

Recommended Posts

Bom dia galera,

 

Sou um novo estudande (alguns dizem, que estou remando contra a maré) de delphi. E me deparei com um problema simples inerentes a todas as linguagens...

 

Que seria, ler 3 numeros e escreve-los em ordem crescente. Só que ele não executa de forma correta, ele simplesmente executa todos os ifs, e escreve todos os resultados possíveis. Segue o código:

var n1, n2, n3 : integer;var x : integer;Beginwrite('Escreva um numero: ');readln(n1);write('Escreva um numero: ');readln(n2);write('Escreva um numero: ');readln(n3);if (n1>n2) and (n1>n3) then;       if (n2>n3) then    write('Os numeros em ordem crescente são ', '',n1,'', n2,'', n3)    else      write('Os numeros em ordem crescente são ', '',n1,'', n3,'', n2);if(n2>n1)and(n2>n3) then;  if(n1>n3) then    write('Os numeros em ordem crescente são ', '',n2,'', n1,'', n3)   else       write('Os numeros em ordem crescente são ', '',n2,'', n3,'', n1);if(n3>n1)and(n3>n2) then;  if(n1>n2) then    write('Os numeros em ordem crescente são ', '',n3,'', n1,'', n2)    else       write('Os numeros em ordem crescente são ', '',n3,'', n2,'', n1);End.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @ricskyred.

 

Depois do then não tem ";"...

 

 

 

Esse código, abaixo:

if (n1>n2) and (n1>n3) then;       if (n2>n3) then    write('Os numeros em ordem crescente são ', '',n1,'', n2,'', n3)    else      write('Os numeros em ordem crescente são ', '',n1,'', n3,'', n2);

Seria equivalente a

if (n1>n2) and (n1>n3) then  begin  end;if (n2>n3) then  write('Os numeros em ordem crescente são ', '',n1,'', n2,'', n3)else  write('Os numeros em ordem crescente são ', '',n1,'', n3,'', n2);

Ou seja, a verificação do primeiro if não vai resultar em nada. (se false, ele pula. Se true não executa nada).

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá @ricskyred.

 

Depois do then não tem ";"...

 

 

 

Esse código, abaixo:

if (n1>n2) and (n1>n3) then;       if (n2>n3) then    write('Os numeros em ordem crescente são ', '',n1,'', n2,'', n3)    else      write('Os numeros em ordem crescente são ', '',n1,'', n3,'', n2);

Seria equivalente a

if (n1>n2) and (n1>n3) then  begin  end;if (n2>n3) then  write('Os numeros em ordem crescente são ', '',n1,'', n2,'', n3)else  write('Os numeros em ordem crescente são ', '',n1,'', n3,'', n2);

Ou seja, a verificação do primeiro if não vai resultar em nada. (se false, ele pula. Se true não executa nada).

 

E outra coisa que seria legal para o seu projeto é acrescentar o readln; em baixo de cada write('');

claro que isso mudara em pouca coisa...(só vai dar mais um tempo para voce ler)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá.
 

E outra coisa que seria legal para o seu projeto é acrescentar o readln; em baixo de cada write('');
claro que isso mudara em pouca coisa...(só vai dar mais um tempo para voce ler)

Não precisa, basta colocar um só antes do "END." (ou logo após a estrutura do último if). Haja vista que somente uma write deverá ser executado.. (e independente de qual for, precisará para uma vez).
 

 

 

PS: De certo modo, todos os if poderiam ficar associados em uma estrutura só, já que são "respostas mutuamente exclusivas"¹.

 

1 se for uma resposta, não pode ser outra. (ex.: se é sexo masculino, não pode ser feminino. Se for par, não pode ser ímpar etc).
 

if (n1>n2) and (n1>n3) then  if (n2>n3) then    write('Os numeros em ordem crescente são ', '',n1,'', n2,'', n3)  else    write('Os numeros em ordem crescente são ', '',n1,'', n3,'', n2)else   if(n2>n1)and(n2>n3) then    if(n1>n3) then      write('Os numeros em ordem crescente são ', '',n2,'', n1,'', n3)    else      write('Os numeros em ordem crescente são ', '',n2,'', n3,'', n1)  else    if(n3>n1)and(n3>n2) then      if(n1>n2) then        write('Os numeros em ordem crescente são ', '',n3,'', n1,'', n2)      else        write('Os numeros em ordem crescente são ', '',n3,'', n2,'', n1);

Obs.: Não necessariamente já é uma resposta final, por exemplo se tiverem 2 ou mais valores iguais, com certeza já não ia funcionar.

 

Obs.2: Não estou com compilador, mas acredito que a estrutura esteja correta...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×