Fórum Valores Ordem Crescente #206650
15/01/2004
0
Fiz um com 2 variáveis, com o seguinte código:
var
A, B, X: Integer;
begin
A := StrToInt(edtA.Text);
B := StrToInt(edtB.Text);
if (A > B) then
begin
X := A;
A := B;
B := X;
end;
lblA.Caption := IntToStr(A);
lblB.Caption := IntToStr(B);
edtA.SetFocus;
acontecia o seguinte, caso digitar valores iguais ele mostra na tela em ordem ´crescente´, teria como fazer será com 3 variáveis?
não se se entenderam o código?
Desde já agradeço a ajuda, obrigado
Diegobarcelos
Curtir tópico
+ 0Posts
15/01/2004
Marcelo Saviski
digamos que você tenha três Edits
crie três variaveis
Num1, Num2, Num3: Integer;
coloque um botão organizar e insira esse código
Num1 := IntToStr(Edit1.Text); Num2 := IntToStr(Edit2.Text); Num3 := IntToStr(Edit3.Text);
agora temos que organizar isso
a variável Num1 deve conter o menor valor, a Num2 o valor mediano e Valor3 a maior valor, porenquanto eles estão desordenados
para isso, temos que comparar se Num1 é menor que Num2, se Num1 for menor, temos que mandar ele para algum lugar, uma váriavel temporária ([color=green:6b0a9dd095]tmp: Integer;[/color:6b0a9dd095])
ficaria mais ou menos assim:
If num2 < num1 Then begin tmp := num1; num1 := num2; num2 := tmp; end; If num3 < num2 Then begin tmp := num2; num2 := num3; num3 := tmp; end;
pode fazer assim agora:
ShowMessage(´NumMenor = ´ + IntToStr(Num1) + ´ NumMedio = ´ + IntToStr(Num2) + ´ NumMaior = ´ + IntToStr(Num3));
Gostei + 0
15/01/2004
Marco Salles
Vamos Trabalhar Com Números Para Ficar Mais Fácil:
Num1=3,Num2=2,Num3=1 Valores Antes
Marcelo Saviski Escreveu:
//1 bloco if..then
If num2 < num1 Then //num2=2 < Num1=3===> Verdade
begin
tmp := num1;
num1 := num2;
num2 := tmp;
end;
Valores Apos 1 Bloco If.... Then:
Num1=2, Num2=3,Num3=1
//2 bloco if then
If num3 < num2 Then //Num3=1 < Num2=3====> Verdade
begin
tmp := num2;
num2 := num3;
num3 := tmp;
end;
Valores Após o Segundo Bloco If.... Then
Num1:=2,Num2=1,Num3=3; ***Que Acredito Não Estar Em Ordem***
Portanto, Com Eu Disse Anteriormente , Nosso Amigo Marcelo Saviski, Esqueceu De Colocar Um Último e Decissivo Bloco If..Then. Quero Ainda Destacar a Tecnica De Ordenação(Usando a SUBSTITUIÇAO) Sugerido Pelo Marcelo Saviski ...O Código Que Sugiro Basei-se Nesta Mesma Tecnica, Porem Usa 3 Blocos If Then e Segue Abaixo:
procedure TForm1.Button3Click(Sender: TObject);
var
a,b,c,x:Integer;
begin
a:=StrToInt(Edita.Text);
b:=StrToInt(Editb.Text);
c:=StrToInt(Editc.Text);
if (b>a) Then //Troca
begin
x:=a;
a:=b;
b:=x;
end;
if (c>a) Then //Troca
begin
x:=a;
a:=c;
c:=x;
end;
if (c>b) Then //Troca
begin
x:=b;
b:=c;
c:=x;
end;
Edita.Text:=IntToStr(a);
Editb.Text:=IntToStr(b);
Editc.Text:=IntToStr(c);
end;
Obs: Existem Muitas Maneiras De Realizar Este Tipo De Tarefa.
Gostei + 0
15/01/2004
Fabio.hc
A solução apresentada pelo Marco Salles mostra o resultado em ordem decrescente.
Para mostrar em ordem crescente usando o mesmo código que o Marco Salles apresentou basta trocar o sinal ´>´ para ´<´ dos if´s.
Gostei + 0
15/01/2004
Marco Salles
Edita.Text:=IntToStr(a);
Editb.Text:=IntToStr(b);
Editc.Text:=IntToStr(c);
Trocar Por :
[color=red:fec764ae4c]Edita.Text:=IntToStr(c); [/color:fec764ae4c]
Editb.Text:=IntToStr(b);
[color=red:fec764ae4c]Editc.Text:=IntToStr(a); [/color:fec764ae4c]
e o Critério Da Ordem Será Respeitado. Valeu....
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)