#include<iostream.h>
#include<stdlib.h>
int decrescente(const void *, const void *);
int crescente(const void *, const void *);
int main(int argc, char **argv){
int *numeri;
int n, opz;
int (*compara)(const void *, const void *); // puntatore a funzione
cout << "\nInserisci un numero di valori da ordinare: ";
cin >> n;
numeri=new int[n];
if(!numeri){
cout << "Errore memoria esaurita!" << endl;
exit(EXIT_FAILURE);
}
for(int ii=0; ii<n; ++ii)
numeri[ii]=rand();
cout << "\nInserisci 0 per ordinarli in senso decrescente: ";
cin >> opz;
if(!opz)
compara=decrescente;
else
compara=crescente;
qsort((void *)numeri, n, sizeof(int), compara);
for(int ii=0; ii<n; ++ii)
cout << ii << " - " << numeri[ii] << endl;
return 0;
}
int decrescente(const void *a, const void *b){
return(*((int *)a)<*((int *)b))?1:0;
}
int crescente(const void *a, const void *b){
return(*((int *)a)>*((int *)b))?1:0;
}