Jump to content

[Resolvido] Duvida - Ciclo for...to


Yana
 Share

Recommended Posts

Boa tarde,

Estava a continuar a ler o tutorial do thoga31, e há uma parte de que não percebi:

program crescente;
var lista : array [1..10] of integer; // lista de 10 inteiros
i, j : integer; // dois contadores para os ciclos FOR
aux : integer; // auxiliar para troca de valores em lista
begin
writeln('INTRODUZA OS 10 VALORES DA LISTA:');
for i:=1 to 10 do begin // lê a lista
write('Valor nº', i, ': ');
readln(lista[i]);
end;
for i:=1 to 10 do begin // coloca a lista por ordem crescente
for j:=i to 10 do begin
if (lista[j]<lista[i]) then begin
aux:=lista[j];
lista[j]:=lista[i];
lista[i]:=aux;
end;
end;
end;
write('Lista por ordem crescente: ');
for i:=1 to 10 do begin // mostra a lista, agora ordenada
write(lista[i],'; ');
end;
writeln;
write('ENTER para sair. . .');
re

A duvida é a seguinte:

for i:=1 to 10 do begin // coloca a lista por ordem crescente
for j:=i to 10 do begin // Qual é o objectivo deste ciclo?
if (lista[j]<lista[i]) then begin
aux:=lista[j];
lista[j]:=lista[i];
lista[i]:=aux;    
end;
end;
end;
Edited by thoga31
GeSHi
Link to comment
Share on other sites

Olá,

Primeiro, convém indentares o teu código para se perceber melhor a lógica e sequência do programa.

Quanto à tua dúvida, o objectivo é fazer a comparação de 2 locais do array. Para isso, neste caso, são necessários 2 ciclos. digo neste caso, porque á várias formas de ordenação. Esta é uma delas.

Repara, o primeiro ciclo nem tem a necessidade de ir até ao valor máximo, basta ir até ao valor máximo-1.

  • Vote 1
Link to comment
Share on other sites

Olá,

Primeiro, convém indentares o teu código para se perceber melhor a lógica e sequência do programa.

Quanto à tua dúvida, o objectivo é fazer a comparação de 2 locais do array. Para isso, neste caso, são necessários 2 ciclos. digo neste caso, porque á várias formas de ordenação. Esta é uma delas.

Repara, o primeiro ciclo nem tem a necessidade de ir até ao valor máximo, basta ir até ao valor máximo-1.

Ok, obrigado.

Cada ciclo vai corresponder a um número do array para fazer a comparação correto?

Link to comment
Share on other sites

Cada ciclo vai corresponder a um número do array para fazer a comparação correto?

Exacto. Vai comparar a posição i no array com a posição j no mesmo array.

Se conseguiste compreender, também compreendeste a minha observação sobre o ultimo valor no primeiro ciclo. Não tem lógica comparar a 10ª posição (i) com a 10ª posição (j)

  • Vote 1
Link to comment
Share on other sites

Exacto. Vai comparar a posição i no array com a posição j no mesmo array.

Se conseguiste compreender, também compreendeste a minha observação sobre o ultimo valor no primeiro ciclo. Não tem lógica comparar a 10ª posição (i) com a 10ª posição (j)

Sim, muito obrigado 👍

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.