PDA

View Full Version : [C++] Ordinare un vettore


sekkia
13-03-2008, 17:32
"Inserisci un vettore di N elementi ordinalo in modo crescente e visualizzalo, aggiungi da tastiera un nuovo numero nel vettore e riordinalo; visualizza il vettore risultante"
Questa la consegna, ma ho un problema: quando l'utente inserisce il numero da aggiungere poi stampa il vettore ma senza il numero aggiunto. :mc:
Dov'è il problema? :help:

/* vett1 */
#include <iostream.h>
#include <time.h>
#include <stdio.h>

int LUN, I, vet[1000], K, COM, vet2[1000], N;

main()
{
srand(time(NULL));
cout<<"Quanti numeri vuoi inserire?"<<endl;
cin>>LUN;
for (I=0; I<LUN; I++)
{
vet[I]=rand()%100;
cout<<vet[I]<<" ";
}
cout<<endl;
cout<<endl;
for (I=0; I<LUN; I++)
{
for(K=I+1; K< LUN; K++)
{
if(vet[I]>vet[K])
{
COM=vet[I];
vet[I]=vet[K];
vet[K]=COM;
}
}
}
cout<<"Inserisci un altro numero"<<endl;
cin>>N;
vet2[LUN]=N;
for(I=0; I<LUN; I++)
{
vet2[I]=vet[I];
cout<<vet2[I]<<" ";
}
getchar();
getchar();
}

wingman87
13-03-2008, 18:50
Perché il ciclo di stampa termina prima di stampare l'ultimo elemento, cioè vet2[LUN]. Se vuoi stampare anche quello basta cambiare la condizione di termine del ciclo che adesso è I<LUN in I<=LUN
Edit: anzi, ho detto una cazzata, perché dentro al ciclo lo sovrascriveresti. Se vuoi stamparlo devi farlo fuori dal ciclo

Edit2: ad ogni modo non hai ancora terminato l'esercizio perché devi ancora ordinare il nuovo vettore. Tra l'altro, perché usi due vettori? Ne bastava uno.

Tommo
13-03-2008, 19:07
"Inserisci un vettore di N elementi ordinalo in modo crescente e visualizzalo, aggiungi da tastiera un nuovo numero nel vettore e riordinalo; visualizza il vettore risultante"

Hmm.. a guardare il codice mi pare che non riordini il vettore dopo cin >> N... quindi non rispetti la seconda parte della consegna...
Poi il < LUN fa si che il for non arrivi mai al nuovo valore, e anche se ci arrivasse, come ha detto Wingman, lo sostituirebbe.

IMHO dovresti farti una funzione che stampa il vettore e una funzione che lo riordina. Così in main chiamando quelle due avresti tutto più ordinato :D

sekkia
13-03-2008, 19:44
Che stupido, bastava un
cout<<vet2[LUN];

:muro: :fagiano:
Problema risolto, grazie a tutti :)

cionci
14-03-2008, 03:30
Dove stai studiando il C++ ? Se lo stai studiando su un libro ti volevo far notare che è molto vecchio.
Gli header che hai inserito si scrivono così:

#include <iostream>
#include <ctime>
#include <cstdio>

using namespace std;