struct archivio_degenze
{
char *nomi_degenti;
int numero_giorni_degenza;
struct archivio_degenze *successivo;
};
int contaelementi(archivio_degenze *first);
class reparti : public element
{
archivio_degenze *primo,*ultimo,*degente;
public:
char *nome_reparto;
int numero_posti,giorni_degenza_media;
reparti(): primo(0),ultimo(0)
{}
~reparti()
{
archivio_degenze *degente=primo;
while (degente)
{
primo=degente->successivo;
delete degente;
degente=primo;
}
}
void nuovo_degente()
{
archivio_degenze *degente= new archivio_degenze;
cout<<"inserisci il nome del degente"<<endl;
cin>>degente->nomi_degenti;
cout<<"inserisci i gioni di degenza"<<endl;
cin>>degente->numero_giorni_degenza;
degente->successivo=0;
if(primo)
{
ultimo->successivo=degente;
}
else
{
primo=degente;
}
ultimo=degente;
}
void printinfo ()
{
degente=primo;
//il programma si blocca proprio a questo cout.
cout<<" nome degente : "<<degente->nomi_degenti<<endl;
cout<<"giorni di degenza : "<<degente->numero_giorni_degenza<<endl;
int numero_degenti=contaelementi(degente);
cout<<"numero degenti : "<<numero_degenti<<endl;
cout<<" nome degente : "<<degente->nomi_degenti<<endl;
cout<<"giorni di degenza : "<<degente->numero_giorni_degenza<<endl;
degente=primo;
for(int i=0;i<numero_degenti;i++)
{
cout<<" nome degente : "<<degente->nomi_degenti<<endl;
cout<<"giorni di degenza : "<<degente->numero_giorni_degenza<<endl;
}
int degenza_totale=0;
degente=primo;
for(int i=0;i<numero_degenti;i++)
{
degenza_totale=degenza_totale+degente->numero_giorni_degenza;
}
giorni_degenza_media=degenza_totale/numero_degenti;
cout<<"giorni di degenza media del reparto : "<<giorni_degenza_media<<endl;
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
reparti istanza[25];
char *nome=new char[25];
int x,altriospedali,i=0,j=0;
do
{
altriospedali=0;
cout<<"inserisci il nome dell'ospedale"<<endl;
cin.getline(nome,25);
istanza[j].impostanome(nome);
do
{
x=0;
istanza[i].nuovo_degente();
cout<<"devi inserire altri degenti?si(1),no(0)"<<endl;
cin>>x;
i++;
istanza[i].printinfo();
}while(x==1);
cout<<"devi inserire informazioni riguardanti altri ospedali?si(1),no(0)"<<endl;
cin>>altriospedali;
j++;
}while(altriospedali==1);
return a.exec();
}
int contaelementi(archivio_degenze *first)
{
int i=0;
archivio_degenze* n = first;
while(n != NULL)
{
i++;
n=n->successivo;
}
return (i);
}