Ir ao conteúdo
  • Cadastre-se

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


Posts recomendados

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.
Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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

Link para o comentário
Compartilhar em outros sites

  • 2 semanas depois...

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)

Link para o comentário
Compartilhar em outros sites

  • Membro VIP

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

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber 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...