Informática, perguntado por weslleywill1995, 10 meses atrás

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.

Anexos:

Soluções para a tarefa

Respondido por gabriel040397p7jf4p
2

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;

}

}

Perguntas interessantes
Informática, 6 meses atrás