codice:
#include <iostream>
#include <cstdlib>
using namespace std;
int compare(const void* a, const void* b)
{
return (*(int*)b - *(int*)a);
}
int main()
{
int array[100];
cout <<"####################################\n";
cout <<"#....Calcola Iniziativa per D&D....#\n";
cout <<"####################################\n\n\n";
int i, u = 0;
cout << "Giocatori partecipanti al combattimento?" << endl;
cin >> i;
if (i>100) {
cout <<"Troppi player....\n";
system ("pause");
return 1;
}
while(u < i){
cout << "Dammi l'iniziativa del giocatore #" << u+1 << endl;
cin >> array[u];
u++;
}
u = 0;
qsort(array, i,sizeof(int),compare);
while(u < i){
cout << "giocatore " << u+1 << "\tIniziativa = " << array[u] << endl;
u++;
}
system("PAUSE");
return 0;
}
Ref sulla funzione qsort
Comunque attenzione! Così come è strutturato adesso il programma ha un problema: ordinando l'array perdi l'assocazione giocatore-iniziativa:
Esempio con 3 giocatori:
giocatore 0 ====> 5 iniziativa
giocatore 1 ====> 60 iniziativa
giocatore 2 ====> 3 iniziativa
ora ordinamo l'array dell' iniziativa e ottneiamo
posizione 0 ====> 60
posizione 1 ====> 5
posizione 2 ====> 3
ora stampando i valori come proposto dal tuo codice si otterrebbe:
giocatore 0 ====> 60 iniziativa
giocatore 1 ====> 5 iniziativa
giocatore 2 ====> 3 iniziativa
quindi attenzione devi fare in modo che anche "l'ordine dei giocatori" si riadatti alla nuova disposizione degli elementi dell'array