PDA

Visualizza la versione completa : C++ funzioni?!


Negan
04-05-2017, 22:12
Salve. potete correggermi questo esercizio? In pratica devo creare una funzione che mi ordini un vettore, il problema è che poi non lo riesco a stampare in modo ordinato, una volta inseriti gli elementi del vettore non mi stampa niente.
#include <iostream>
using namespace std;
int vet[5],n,i=0,t;
void ordinamento(int n)
{
bool s;
do{
s=false;
for(i=0;i<n;i++)
{
if(vet[i]>vet[i+1])
{
t=vet[i];
vet[i]=vet[i+1];
vet[i+1]=t;
s=true;
}
}
}while(s==true);
for(i=0;i<n;i++)
{
cout<<vet[i]<<endl;
}
}


int main()
{
do{
cout<<"Inserisci n: (n<=5)";
cin>>n;
}while(n>5);
for(i=0;i<n;i++)
{
cout<<"Inserisci elemento di posizione: "<<i<<endl;
cin>>vet[i];
}


}

ANDPRI
05-05-2017, 00:23
Non ho controllato se la funzione funziona, ma di sicuro non funziona se non la chiami

oregon
05-05-2017, 00:49
Non ho controllato se la funzione funziona, ma di sicuro non funziona se non la chiami

Il ragionamento non fa una piega ... :-)

Comunque, la for dell'ordinamento va cambiata in

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

ANDPRI
05-05-2017, 00:59
Beh comunque l'ho appena provata e ora ti posso dire che funziona, ma a metà, perché alla fine, con l'ultimo valore assunto da i (che sarebbe n-1), tu controlli se vet[i]>vet[i+1] ma questo lo fa uscire fuori dal limite dell'array e sballa tutto. Se non fosse per quello dovrebbe funzionare. Infatti quando cerco di ordinare 3,5,1,2,4, viene fuori 0,1,2,3,4. Comunque il ragionamento che hai fatto è davvero contorto, ci ho messo un po' a capirlo

oregon
05-05-2017, 01:03
Perché contorto? E' il classico bubble sort ...

ANDPRI
05-05-2017, 08:08
Allora sarà contorto solo per me, magari in realtà quello contorto sono io, ho pensato a un modo diverso e a questo non ci avrei mai pensato

oregon
05-05-2017, 09:14
Allora sarà contorto solo per me, magari in realtà quello contorto sono io, ho pensato a un modo diverso e a questo non ci avrei mai pensato

Hai studiati gli algoritmi di ordinamento?

ANDPRI
05-05-2017, 16:33
Mi sono limitato a trovare un modo da solo, ieri

oregon
05-05-2017, 21:32
Mi sono limitato a trovare un modo da solo, ieri

Ok, ma gli algoritmi standard vanno studiati comunque ...

Fra l'altro la libreria del C prevede la quicksort già implementata

http://www.cplusplus.com/reference/cstdlib/qsort/

Loading