Salve. Sto studiando il linguaggio C++, e nella sezione di studio sugli array del mio libro si proponeva la realizzazione di un programma di sorting, tramite il selection sorting.
In pratica, come sapete, un programma che scelga il numero minore tra quelli da ordinare e lo sostituisca al primo, ripetendo il processo senza più considerare il primo numero, già scambiato.
Io ho pensato di realizzarlo così:
codice:
/*Programma per l'ordinamento
in senso crescente di un vettore.*/
#include <iostream.h>
float numero[5], alto;
unsigned i, j, k;
char Stop;
int main()
{
/*Acquisisco i 5 numeri*/
for(i=0; i<5; i++){
cout << "Inserire il " << i+1 << " numero." << endl;
cin >> numero[1];
}
cout << endl;
i=0;
/*Li ordino*/
for(i=0; i<5; i++){
alto = numero[i];
k=0;
for(j=i; j<5; j++){
if(numero[j] < alto){
alto = numero[j];
k = j;
}
}
numero[k] = numero[i];
numero[i] = alto;
}
/*Stampo i numeri nell'ordine*/
cout << "I cinque numeri sono, in ordine crescente:";
for(i=0; i<5; i++)
cout << " " << numero[i];
cout << ".";
cin >> Stop;
return(0);
}
Tuttavia, qualunque siano i cinque numeri, il programma restituisce come risultato l'ultimo numero inserito, seguito da tre zeri e nuovamente dall'ultimo numero inserito.
Ad esempio, se i numeri inseriti sono 12, -349, 4, 3.7, 4, il programma stampa come risultato:
4 0 0 0 4.
Come mai??