Escreva um programa que leia um vetor de 100 posições e mostre-o ordenado em ordem crescente.
Soluções para a tarefa
declare vetor[100]
contador1
contador2
aux
numerico
//Atribui valores iniciais necessários
contador1 <- 1
contador2 <- 1
//Preenche vetor
repita
se (contador1 > 100) entao
interrompa
fimse
escreva("Informe um valor para o vetor: ")
leia(vetor[contador1])
contador1 <- contador1 + 1
fimrepita
//Ordena vetor de forma crescente
contador1 <- 1
repita
se (contador1 > 100) entao
interrompa
fimse
contador2 <- 1
repita
se(contador2 > 100) entao
interrompa
fimse
se(vetor[contador1] < vetor[contador2]) entao
aux <- vetor[contador1]
vetor[contador1] <- vetor[contador2]
vetor[contador1] <- aux
fimse
contador2 <- contador2 + 1
fimrepita
contador1 <- contador1 + 1
fimrepita
//Mostra vetor
contador1 <- 1
repita
se (contador1 > 100) entao
interrompa
fimse
escreva(vetor[contador1])
contador1 <- contador1 + 1
fimrepita
fimalgoritmo
Resposta:
Joga numa IDE que a formatação te ajuda na compreensão ;)
Explicação:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a, b, i, ii, subst, vec[100];
//Entrada dos valores
for(i=0; i<100; i++)
{
printf("Insira o %dº valor:\n", i+1);
scanf("%d", &vec[i]);
}
//Esquema de comparações
for(i=0; i<99; i++) //passa por 99 posições do vetor (0-98). //posições do vetor analisadas para comparação de forma crescente (desconsidera a comparação do último elemento, já que ele vai ter se comparado com todos e não pode ser comparado consigo mesmo).
{
a=vec[i];
for(ii=99; ii>=i+1; ii--) // 99(último elemento)até uma posição a mais do que a do vetor principal. //subcomparação da posição do vetor em questão com todos os outros elementos de forma decrescente.
{
b=vec[ii];
if(a>b)
{
subst=a;
a=b;
b=subst;
vec[i]=a;
vec[ii]=b;
}
}
}
//Impressão dos dados
printf("Os dados ordenados:\n");
for(i=0; i<100; i++)
{
printf("\n%d", vec[i]);
}
return 0;
}