Leia 3 valores inteiros e ordene-os em ordem crescente. No final, mostre os valores em ordem crescente, uma linha em branco e em seguida, os valores na sequência como foram lidos.
Respostas
Vou escrever o algoritmo em c++ e fazer comentários durante o código.
Mas antes vamos a lógica
Digamos que eu leia 3 valores: 5 4 3
Para ordená-los, precisamos fazer comparações, observe que quando eu Comparo o primeiro termo que é 5 com o segundo que é 4, temos o seguinte:
Se 5 > 4, então eu troco a posição, ficando assim 4 5 3.
Comparamos o primeiro termo novamente que agora é 4 com o terceiro que continua sendo 3, então temos:
Se 4 > 3, então trocamos a posição, se não, então não faça nada.
Assim ordenamos tudo, ficando 3 4 5.
Usaremos a mesma lógica no código, só que utilizando 2 vetores e uma variável auxiliar.
#include<iostream>
#include<stdlib.h>
using namespace std;
main(){
int a[3], b[3], aux;
for(int i=0; i<3; i++){
cin >> a[i];
b[i] = a[i]; /*Armazeno os valores de A em cada posição na respectiva posição de b, para guardamos os valores antes de ordená-los./*
}
/*Aqui nós comparamos o primeiro termo de A(índice 0 com o segundo(índice 1) e o terceiro termo(índice 2). Logo comparamos a o valor armazenado no primeiro índice 0 de A com o índice 1 e depois com o índice 2. Note que o contador i precisa começar em 0 e terminar em 1 e o contador de j precisa começar em i+1 e terminar em 2, por causa da comparação/*
for(int i=0; i<2; i++){
for(int j=i+1; j<3; j++){
if(a[i]>a[j]){
aux = a[i];
a[i] = a[j];
a[j] = aux;
}
}
}
system("cls");
for(int i=0; i<3; i++){
cout << a[i] << endl;
}
cout << endl;
for(int i=0; i<3; i++){
cout << b[i] << endl;
}
}