Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

TAAnnGGAAuunnnn

Quatro valores em ordem decrescentes!

Recommended Posts

Gente tou começando o curso de analise de sistemas e jah tenhu um dever pa casa que naum estou conseguindo fazer, sei que poder ser basico mais eu naum sei, num consigo fazer a logica.

 

Eis o problema

 

Faça um programa em linguagem C que receba quatro informações escalares (números inteiros)e as exiba em ordem decrescente.

 

valew

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou dar um algoritmo simples e desotimizado. Não vou escrever o programa inteiro para você: quebre a cabeça um pouco, senão você não vai aprender nada!

O meu algoritmo é propositalmente ineficiente para você mesmo ver como pode melhorá-lo.

 

Primeiro, você define um vetor de 4 ints.

int IntVec[4];

 

E então você cria um for que itere neste vetor, pedindo para o usuário colocar os valores em cada índice do vetor.

for(int i = 0, i < 4, i++)
{
scanf("%d",&IntVec[i]);
}

 

E então precisamos exibir (e não organizar o vetor) em ordem decrescente.

Portanto, precisamos encontrar o maior valor presente no vetor. Nós vamos exibí-lo primeiro, afinal de contas.

Para tanto, você cria uma variável que servirá para gravar o maior valor. Assim, nós percorremos o vetor e vemos se o valor atual desta variável é maior ou menor que cada índice do vetor.

int Highest = IntVec[0]; //vamos igualar a variavel ao primeiro valor do vetor
for(i = 1, i < 4, i++) //vamos fazer um for que comece a partir do segundo indice do vetor
{
  if(IntVec[i] > Highest) //vemos se o valor do indice atual eh maior que o Highest
  {
		Highest = IntVec[i]; //O Highest nao era o maior, o indice atual eh maior.
  }
}

 

Ao final deste for, o Highest será igual ao maior valor presente no vetor.

 

 

Agora você imprime o Highest, pois ele é o maior. Agora precisamos achar o segundo maior valor do vetor.

Não vou o escrever o código desta parte: vou apenas escrever o conceito do algoritmo. Não seja folgado e implemento-o você mesmo.

 

Nós encontramos o maior valor do vetor, mas não sabemos em qual posição do vetor ele está. A indefinição de posições é o nosso maior obstáculo para determinarmos o segundo, terceiro e quarto maiores valores. Temos a seguinte pergunta: podemos alterar o vetor? Se sim, você terá de achar um jeito de fazer com que o maior valor seja o primeiro e o menor valor seja o último. Para fazer com que o maior valor seja o último, nós precisamos fazer com que o índice que contenha o maior valor troque de lugar com o índice atualmente sendo testado durante uma iteração dentro do vetor. Se você não puder alterar o vetor, você pode tentar criar um segundo vetor, que contenha como primeiro índice o índice do maior valor do primeiro vetor, e o segundo índice seja o índice do segundo maior valor, e por aí vai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.