#include <iostream.h>
#include <stdio.h>
#include <string.h>

struct persona {
		 char nome [40];
		 char cognome [40];
		 int voto;
		 persona *next;
		 };


class lista {
		persona *head;
		public :
		lista () {head=NULL;}; //inizializza la lista a NULL (valore inesistente 0 '/0')
		void add (char*, char*, int);
		void show (); //visualizza lista;
		void show (char*); //visualizza nomi cercati;
		void ordina ();
		int media ();
		int votomax ();
		int votomin ();
};

void lista:: add(char*n, char*c, int v) {
				 persona *p= new persona;
				 strcpy (p->nome,n);
				 strcpy (p->cognome,c);
				 p->voto=v;
				 p->next=head;
				 head=p;
				 };
void lista:: ordina () {
				 persona *i = head;
				 persona *j = i->next;
				 for (i=head; i; i=i->next)
					 for (j=i->next; j; j=j->next) {
					 persona *buffer= new persona;// creazione prima di if altrimenti nn funziona
					 if ((strcmp(i->cognome,j->cognome)>0) ||
						  (strcmp(i->cognome,j->cognome)==0) && (strcmp(i->nome,j->nome)>0)){

						  strcpy ( buffer->cognome, i->cognome);
						  strcpy ( buffer->nome, i->nome);
						  buffer->voto=i->voto;
						  strcpy ( i->cognome,j->cognome);
						  strcpy ( i->nome, j->nome);
						  i->voto=j->voto;
						  strcpy (j->cognome,buffer->cognome);
						  strcpy (j->nome,buffer->nome);
						  j->voto=buffer->voto;
                     }
						  };
					 };
void lista:: show () {
				 persona *s=head;
				 while (s) {
				 cout << s->cognome<<" "<<s->nome<<" "<<s->voto<<endl;
				 s=s->next;
				 };
				 };
void main () {
				 char nomefile [40];
				 cout <<"Inserisci nomefile"<<endl;
				 cin >> nomefile;
				 if (!nomefile) { cout <<"Non esiste!"<< endl;};
				 FILE* f;
				 lista l;
				 persona buf;
				 f=fopen (nomefile, "r");
				 while (!feof(f)){
				 fscanf (f, "%s %s %d", &buf.nome, &buf.cognome,&buf.voto);
				 l.add (buf.nome, buf.cognome, buf.voto);
				 };
				 l.ordina();

				 l.show();

				 };












