Ordinamento degli array

di il
2 risposte

Ordinamento degli array

Ragazzi ero dietro un esercizio ma non so se ho azzeccato proprio lo stile.. stavo ordinando un array con min e max, poi crescente e decrescente, sul crescente ho risolto, sull'ordinamento decrescente non capisco cosa non vada potete dare un occhio al codice ed eventualmente suggerire procedure più valide..


#include <iostream>

using namespace std;

//massimo

int max(int a[], int dim) {
    int max = NULL;
    for (int i = 0; i < dim; i++) {
        if (max < a[i]) {
            max = a[i];
        }
    }
    return max;
}

// minimo

int min(int a[], int dim){
    int min;
    for(int i=0; i<dim; i++){
        if(min > a[i]){
            min = a[i];
        }
    }
    return min;
}

// ordine crescente

int crescente(int a[], int dim) {
    int appoggio;
    for (int i = 0; i < (dim-1); i++) {
        for (int j = i + 1; j < dim; j++) {
            if (a[i] > a[j]) {
                appoggio = a[j];
                a[j] = a[i];
                a[i] = appoggio;
            }
        }       
    }
    for(int i=0; i<dim; i++)cout <<a[i];    
}

// ordine decrescente
    int decrescente(int a[], int dim){
        int appoggio;
        for(int i=0; i<dim-1; i++){
            for(int j=i+1; j<dim; j++){
                if(a[i] < a[j]){
                    appoggio = a[j];
                    a[j] = a[i];
                    a[i] = appoggio;
                }
            }
        }
        for(int i=0; i<dim; i++)cout << a[i];
    }

/*
 * 
 */
int main(int argc, char** argv) {
    
    int numTot=0, numeri[numTot], massimo, minimo, ordinato;

    cout << "Inserisci quanti numeri interi ci sono da valutare: ",
            cin >> numTot;
    
    cout << "Adesso sara' richiesto di inserire tutti i numeri:\n";
    
    for(int i=0; i<numTot; i++){
        cout << "Inserisci il " << i+1 <<"' numero: ";
        cin >> numeri[i];            
    }
    
    for(int i=0; i<numTot; i++){
        cout << numeri[i] << '\n';
    }
    
    cout << '\n' <<'\n';
    
    cout <<"Il numero massimo dell'array e': ";
    massimo = max(numeri, numTot);
    cout << massimo << '\n' << '\n';
    
    cout <<"Il numero minimo dell'array e': ",
            minimo = min(numeri, numTot),
            cout << minimo << '\n' <<'\n';
    
    cout << "L'array ordinato in modo crescente e': ",
            ordinato = crescente(numeri,numTot),
            cout << ordinato << '\n';
    
    cout << "L'array ordinato in modo decrescente e': ",
            ordinato = decrescente(numeri, numTot),
            cout << ordinato << '\n';
            
}

2 Risposte

  • Re: Ordinamento degli array

    Nel decrescente hai scritto

    if(a < a[j+1]){

    ma nel crescente hai usato i e j
  • Re: Ordinamento degli array

    Scusa ma non mi sei di aiuto.. ho il problema che nella stampa degli array ordinati ottengo sempre un numero in "piu'" che corrisponde alla lunghezza dell array posto l'output
    
    Inserisci quanti numeri interi ci sono da valutare: 5
    Adesso sara' richiesto di inserire tutti i numeri:
    Inserisci il 1' numero: 4
    Inserisci il 2' numero: 65
    Inserisci il 3' numero: 2
    Inserisci il 4' numero: 14
    Inserisci il 5' numero: 7
    4
    65
    2
    14
    7
    
    
    Il numero massimo dell'array e': 65
    
    Il numero minimo dell'array e': 2
    
    L'array ordinato in modo crescente e': 2 4 7 14 65 5
    L'array ordinato in modo decrescente e': 65 14 7 4 2 5
    
Devi accedere o registrarti per scrivere nel forum
2 risposte