1
resposta

C++ | Números aleatórios, ordem por número crescente e decrescente.

Boa noite noite pessoal. Tenho que fazer um algoritmo no qual o mesmo deve estar gerando trinta números aleatórios e ordenar os mesmos por número crescente e decrescente.

Sabendo disso, o meu algoritmo não está imprimindo os números em ordem crescente e decrescente. Sabem porque isso está acontecendo?

Segue abaixo o código em C++.

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctime>

using namespace std;

int main (){
    srand(time(0));    
    int i,y[30],aux[30], TAM=30,v[30],j;

    cout << "Os numeros aleatorios sao: "<<endl;

    for(int i=1;i< TAM;i++){
        v[i]= 1+(rand()%100);
        cout<<v[i]<<endl;
    }

    for (i = 0; i < TAM; i++){
        for(y[i] = v[i] + 1; y[i] < TAM; j++){
            if (v[i] > y[i]){
                aux[i] = i;
                v[i] = y[i];
                y[i] = aux[i];
            }
        }
    }

    cout << "Elementos ordenados (decrescente): \n";
    for( i = 0; i < TAM; i++){
        cout <<v[i]<<endl;
    }

    for (i = 0; i < TAM; i++){
        for(y[i] = v[i] + 1; y[i] < TAM; j++){
            if (v[i] < y[i]){
                aux[i] = i;
                v[i] = y[i];
                y[i] = aux[i];
            }
        }
    }

    cout << "Elementos ordenados (crescente): \n";
    for( i = 0; i < TAM; i++){
        cout <<v[i]<<endl;
    }

    return 0;    
}
1 resposta

De uma olhada no seguinte código:

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <ctime>

using namespace std;

int main (){
    srand(time(0));    
    int i, y, aux, TAM = 30, v[30], j;

    cout << "Os numeros aleatorios sao: " << endl;

    for(int i = 1; i < TAM; i++){
        v[i] = 1 + (rand() % 100);
        cout << v[i] << endl;
    }

    for (i = 0; i < TAM; i++){
        for(y = 1; j < TAM; j++){
            if (v[i] > v[j]){
                aux = v[i];
                v[i] = v[j];
                v[j] = aux;
            }
        }
    }

    cout << "Elementos ordenados (crescente): \n";
    for( i = 0; i < TAM; i++){
        cout << v[i] << endl;
    }

    cout << "Elementos ordenados (decrescente): \n";
    for(i = TAM; i > 0; i--){
        cout << v[i] << endl;
    }

    return 0;    
}

Você não precisa ordenar duas vezes. Quando você ordena uma vez ele já esta em ordem crescente ou decrescente, apenas monte um for que irá exibir o vetor na ordem crescente e outro em decrescente.