Ciao a tutti, sono nuovo nel forum (sono uno studente al 4° anno e frequento una scuola per periti informatici), per puro diletto ho fatto questo programmino... vi posto la consegna e la codifica che ho fatto e vorrei sapere se secondo voi se come ottimizzazione (numero di righe) è accettabile o faccio pena e se secondo voi il metodo che ho usato è quello migliore:
Traccia: Ci sono 5 concorrenti ognuno dei quali partecipa a 6 prove (ottenendo un punteggio per ogni prova). Fare la classifica di chi vince la prima prova, la seconda etc.
Codice:
#include <iostream>
using namespace std;
#define con 5 //concorrenti
#define pro 6 //prove
int main ()
{
typedef struct
{
char nome[20],cognome[20];
int punteggio[pro];
} tab;
typedef struct
{
char nome[20],cognome[20];
int punteggio;
} clas;
typedef struct
{
clas classificato[con];
} ris;
int i=0, p, mag=0, pmag=0, x=0;
tab tabella[con];
ris risultati[pro];
while (i<con) //inserimento dati
{
p=0;
cout<<"CONCORRENTE "<<i+1<<endl;
cout<<endl<<"Nome: ";
cin>> tabella[i].nome;
cout<<endl<<"Cognome: ";
cin>> tabella[i].cognome;
while (p<pro)
{
cout<<endl<<"Punteggio prova "<<p+1<<" : ";
cin>>tabella[i].punteggio[p];
p++;
}
i++;
}
p=0;
while (p<pro) //calcolo classifica
{
x=0;
while (x<con)
{
mag=0;
pmag=0;
i=0;
while (i<con) //a fine ciclo mag=numero concorrente con punteggio maggiore
{
if (tabella[i].punteggio[p]>pmag)
{
mag=i;
pmag=tabella[i].punteggio[p];
}
i++;
}
risultati[p].classificato[x].nome=tabella[mag].nome;
risultati[p].classificato[x].cognome=tabella[mag].cognome;
risultati[p].classificato[x].punteggio=tabella[mag].punteggio[p];
x++;
}
p++;
}
p=0;
while (p<pro) //stampa classifiche
{
x=0;
while (x<con)
{
cout<<"PROVA "<<p+1<<" :"<<endl;
cout<<x+1<<"o classificato: "<<risultati[p].classificato[x].nome<<" "<<risultati[p].classificato[x].cognome<<" con "<<risultati[p].classificato[x].punteggio<<" punti."<<endl;
x++;
}
p++;
}
system("PAUSE");
return 0;
}