Informática, perguntado por YasminMarqueis, 11 meses atrás

Como o programa abaixo funciona?
#include
void main () {
int vetor[10];
int x,y,z;
for (x=0;x<10;x++) scanf ("%d", &vetor[x]);
for (x=0;x<9;x++) {
for (y=x+1;y<10;y++) {
if (vetor[x]>vetor[y]) {
z=vetor[x]
vetor[x] = vetor[y]
vetor[y] = z
}
}
}
for (x=0;x<10;x++) printf ("%d\n", vetor[x];
}
Qual a função do programa? e quais numeros serão impressos se as entradas forem 17, 1, 77, 39, 22, 57, 25, 42, 69 e 31?

Soluções para a tarefa

Respondido por GFerraz
0
Boa noite.

Esse programa é um algoritmo de ordenação. Ele toma os valores de um vetor e o organiza em ordem crescente.

Vamos analisar por partes. "Dividir para conquistar".

Para x ← 0 até x < 10 passo 1 faça
Leia vetor[x]
fim-para

Essa parte lerá o vetor, não tem segredo aqui.

Agora à ordenação:

Para x ← 0 até x < 9 passo 1 faça
Para y ← x + 1 até y < 10 passo 1 faça
Se vetor[x] > vetor[y]
z ← vetor[x]
vetor[x] ← vetor[y]
vetor[y] ← z
fim-se
fim-para
fim-para

O primeiro for inicia do zero, e depois vai para o segundo, que inicia com 0 + 1 = 1, que é a casa seguinte do vetor. Aí o programa pergunta se a casa seguinte é maior que a analisada. Se for, precisamos trocar as casas de posição, e por isso usamos uma variável auxiliar z depois disso o for vai para 2. Se não, o segundo for vai para 2 direto. Assim, a comparação é feita novamente, até chegar em y = 10. Note que se a troca for feita uma vez, nada impede que seja feita de novo

Exemplo:

3 2 1

Começa com x = 0, v[0] = 3 e compara com v[1] = 2. Como v[1] > v[0], trocamos as posições e temos:

2 3 1

y++;
Comparamos v[0] (agora é 2, pois trocamos) com v[2] = 1. Como 2 > 1, trocamos e temos:

1 3 2

Agora já fizemos para x ← 0 e para todos os y. Vamos para x ← 1 (caso final)

v[1] = 3, v[2] = 2

v[1] > v[2], trocamos e temos:

1 2 3

O programa acaba aqui, pois já fizemos para todos os x e y. Organizamos em ordem crescente.


Logo, o programa resultará para os valores dados em:

1
17
22
25
31
39
42
57
69
77


Se ainda tiver dúvidas, comente :)
Perguntas interessantes