PDA

Visualizza la versione completa : [C++]: ordinamento array


elevation
06-03-2003, 09:55
ciao a tutti,
ho questo piccolo programma che "dovrebbe" ordinare gli elementi di un vettore. Il programma viene compilato correttamente ma si blocca durante l'esecuzione al momento della chiamata alla funzione "ordinavet":



#include <iostream>
#include <cstdlib>
void leggi (int vet[], int &p);
void ordinavet (int vet[], const int &p);
void stampa (int vet[], int &p);

int main(int argc, char *argv[])
{
int vet[50], n;
n=0;
cout<<"Inserire la dimensione del vettore (MAX 50)\n";
cin>> n;
cout<<"Inserire gli elementi del vettore\n";
leggi(vet, n);
cout<<"VETTORE ORDINATO\n";
ordinavet(vet, n);
stampa(vet, n);
system("Pause");
return 0;
}

void leggi (int vet[], int &p)
{
int i;
for(i=0; i<p;i++)
{
cout<<"vet["<<i<<"]:";
cin>>vet[i];
}
}

void stampa (int vet[], int &p)
{
int i;
for(i=0; i<p;i++)
{
cout<<"vet["<<i<<"]:";
cout<<vet[i]<<"\n";
}
}


void ordinavet (int vet[], const int &p)
{
int i;
int temp;
int j;
j=0;
temp=0;
for (i=0; i<p-1; i++)

for (j=i+1; i<p; j++)

if (vet[i]<vet[i+1])
{
temp=vet[i+1];
vet[i+1]=vet[i];
vet[i]=temp;
}
}


dove sbaglio?

ciao!

pax_partout
06-03-2003, 11:11
forse sbaglio ma secondo me perche non incrementi la i nel ciclo interno quindi la condizione di uscita dal for non si verifica mai
ciao

Johnny_Depp
06-03-2003, 15:48
void ordinavet (int vet[], const int &p){

int i, j, temp;

for(i=0; i<p-1; i++)

for(j=i+1; j<p; j++)

if(vet[j] < vet[i]){
temp = vet[i];
vet[i] = vet[j];
vet[j] = temp;
}
}

Loading