Non me n'ero proprio accorto. Cmq l'algoritmo con questo aggiustamento funziona e mi ordina i minuti, e volendo anche i secondi facendo la stessa cosa. La ciliegina sulla torta sarebbe scambiare e quindi ordinare anche i nomi dei nuotatori. Ho provato con la funzione strcpy della libreria string ma non mi dà i risultati giusti, ed ho provato la funzione swap ma il compilatore mi segnala un errore! Idee. Ora posto il codice completo e corretto con la segnalazione di skynet:
#include <iostream>
#include <cstring>
using namespace std;
struct nuotatore
{
char nome[20];
int eta;
int minuti;
int secondi;
};
void inserisci (nuotatore *ptr);
int main ()
{
int auxm, auxs;
nuotatore *p, *q;
nuotatore n[5];
p=&n[0];
for (int i=0; i<5; i++, p++)
inserisci(p);
for (int i=5; i>0; i--)
{
p=&n[0];
q=&n[1];
for(int j=0; j<i; j++, p++, q++)
if((p -> minuti) > (q -> minuti))
{
auxm=p -> minuti; //scambio i minuti
p -> minuti=q -> minuti;
q -> minuti=auxm;
auxs=p -> secondi; // scambio i secondi
p -> secondi=q -> secondi;
q -> secondi=auxs;
strcpy(p -> nome, q -> nome);
}
}
q=&n[0];
cout << endl;
for (int i=0; i<5; i++, q++)
{
cout << "Nome nuotatore: " << q -> nome << endl;
cout << "Minuti: " << q -> minuti << endl;
cout << "Secondi: " << q -> secondi << endl << endl;
}
cout << endl << endl;
system ("PAUSE");
return 0;
}
void inserisci (nuotatore *ptr)
{
cout << "Nome nuotatore: ";
cin.sync();
cin.getline (ptr -> nome,20);
cout << "Eta': ";
cin >> ptr -> eta;
cout << "Minuti: ";
cin >> ptr -> minuti;
cout << "Secondi: ";
cin >> ptr -> secondi;
}