PDA

Visualizza la versione completa : [C++] dato un vettore, ordina i suoi elementi


CharlotteW
07-02-2009, 12:44
Dunque, sto provando a creare un programma che dato un vettore (e il suo riempimento) in ingresso, me lo ordini in questo modo:

- cerca il minimo nell’elenco di interi costituito dagli n elementi del vettore di n
- scambia di posizione l’elemento di posto 0 con l’elemento minimo
- cerca il minimo nel sottoelenco costituito dagli n-1 elementi del vettore dalla posizione 1 sino alla posizione n-1
- scambia di posizione l’elemento di posto 1 con l’elemento minimo
- cerca il minimo nel sottoelenco costituito dagli n-2 elementi del vettore dalla posizione 2 sino alla posizione n-1
- scambia di posizione l’elemento di posto 2 con l’elemento minimo
- procede così finchè nel sottoelenco c’è più di un elemento




#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{

int n, i, c, j, k;
int V[n];
int min;

cout<<"\n Inserire il riempimento: ";
cin>>n;

for (i=1; i<=n; i++){
cout<<"\n V["<<i<<"]=";
cin>>V[i];
}


for (i=1; i<n; i++){ // inizio i
min=V[i];
for (j=2; j<=n; j++){ // inizio j
if (V[j]<min){
V[j]=min;
k=j;
}
} // fine j

c=V[i];
V[i]=V[k];
V[k]=c;

} // fine i



for(i=1;i<=n;i++)
cout<<"\n "<<V[i];



system("PAUSE");
return EXIT_SUCCESS;
}


Sapete dirmi dove sbaglio?

oregon
07-02-2009, 12:52
Intant, questa scrittura

int n, i, c, j, k;
int V[n];

non ha senso, in quanto il valore di n non e' ancora definito.

Ti consiglio di usare una costante per

int V[MAXELS];

e ottenere in input n in modo che sia sempre minore o uguale a MAXELS.

Loading