PDA

Visualizza la versione completa : Non riesco a trovare l'errore


Sefirath
16-03-2007, 20:45
Salve a tutti qualcuno sa dirmi come risolvere questo errore????
Aiutatemi sn disperato domani devo consegnare un esame e nn riesco a trovare il problema.....è sicuramente nel terzo metodo ma nn lo trovo.
Io uso come compilatore Dev-C++ v4.9.9.2

QUESTO è TUTTO IL CODICE DEL PROGRAMMA:



#include <iostream>
using namespace std;

class Paziente
{
friend ostream & operator<<(ostream & o, const Paziente & p);
private:
string nomePaziente;
int eta;
int n_ricoveri;
public:
Paziente (){};

Paziente (string npaz,int e,int nr):nomePaziente(npaz),eta(e),n_ricoveri(nr){};

string _nomePaz()const
{
return nomePaziente;
};
int _eta()const
{
return eta;
};
int _n_ricoveri()
{
return n_ricoveri;
};

bool operator == (const Paziente& p2)const
{
return(nomePaziente==p2.nomePaziente);
}
};

class Reparto
{
friend ostream & operator<<(ostream & o, const Reparto & r);
private:
string nomeReparto;
string nomePrimario;
float orari;
Paziente* pPaziente;
int n_paz;
public:
Reparto(){};

Reparto(string nrep,string np,float o):nomeReparto(nrep),nomePrimario(np),orari(o),n_p az(0),pPaziente(NULL){};

string _nomeRep()
{
return nomeReparto;
};
string _nomePrim()
{
return nomePrimario;
};
float _orari()
{
return orari;
};
const Paziente* pPaz()const
{
return pPaziente;
};
int _n_paz()const
{
return n_paz;
};

void agg_Paz (const Paziente& p)
{
Paziente* tmp1= new Paziente[++n_paz];
for(int a=0;a<n_paz-1;a++)
tmp1[a]=pPaziente[a];
tmp1[n_paz-1]=p;
delete[]pPaziente;
pPaziente=tmp1;
}
void stampa()
{
for(int a=0;a<n_paz;a++)
cout<<pPaziente[a];
}
};

class Ospedale
{
friend ostream & operator<<(ostream & o, const Ospedale & os);
private:
string nomeOsp;
string citta;
Reparto* pRep;
int nRep;
public:
Ospedale(){};

Ospedale(string no,string c):nomeOsp(no),citta(c),nRep(0),pRep(NULL){};
string _nomeOsp()
{
return nomeOsp;
};
string _citta()
{
return citta;
};
Reparto* _pRep()
{
return pRep;
};
int _nRep()const
{
return nRep;
};

void agg_Rep(const Reparto& r)
{
Reparto* tmp=new Reparto[++nRep];
for(int a=0;a<nRep-1;a++)
tmp[a]=pRep[a];
tmp[nRep-1]=r;
delete[]pRep;
pRep=tmp;
}
void stampa_rep()
{
for(int a=0;a<nRep;a++)
cout<<pRep[a]<<endl<<endl;
}


//Metodo che riceve un orario o e restituisce il nome dei reparti in cui
//è possibile effettuare visite all'orario o.
string* elenco_reparti(float o)
{
int cont=0;
for (int a=0;a<nRep;a++)
if(pRep[a]._orari()==o)
cont++;

string* tmp=new string[cont];
int i=0;
for (int a=0;a<nRep;a++)
if(pRep[a]._orari()==o)
{
tmp[i]=pRep[a]._nomeRep();
i++;
}
cout<<"L'ospedale in cui e' possibile ricevere visite all'orario "<<o<<" sono:"<<endl<<endl;
for(int a=0;a<cont;a++)
cout<<tmp[a]<<endl<<endl;
};

//Metodo della che restituisce il nome del primario del reparto in cui è
//ricoverato il degente più anziano.
string primario()
{
int max=0;
int i=0;
for(int a=0;a<nRep;a++)
for(int b=0;b<pRep[0]._n_paz();b++)
if(pRep[a].pPaz()[b]._eta()>max)
{
max=pRep[a].pPaz()[b]._eta();
i=a;
}
cout<<"Il primario del reparto in cui e' ricoverao il degente piu' anziano e': "<<endl;
return pRep[i]._nomePrim();
}

//Metodo che riceve il nome di due reparti e restituisce il nome
//dei pazienti ricoverati in entrambi i reparti ordinati per età.
string degenti(Reparto &r1,Reparto &r2)
{
int cont=0;
for(int a=0;a<r1._n_paz();a++)
for(int b=0;b<r2._n_paz();b++)
if(r1.pPaz()[a]._nomePaz()==r2.pPaz()[b]._nomePaz())
cont++;
Paziente* tmp = new Paziente[cont];
int i=0;
for(int a=0;a<r1._n_paz();a++)
for(int b=0;b<r2._n_paz();b++)
if(r1.pPaz()[a]._nomePaz()==r2.pPaz()[b]._nomePaz())
{
tmp[i]=r1.pPaz()[a];
i++;
}

int max=0;
Paziente* tmp1 = new Paziente[cont];
for(int a=0;a<cont;a++)
if(tmp[a]._eta()>max)
{
max=tmp[a]._eta();
tmp1[a]=tmp[a];
tmp[a]=tmp[a+1];
tmp[a+1]=tmp1[a];
}

for(int a=0;a<cont;a++)
cout<<tmp[a]._nomePaz();

}
};

ostream & operator<<(ostream & o, const Reparto & r)
{
o<<"NOME REPARTO: "<<r.nomeReparto<<endl;
o<<"PRIMARIO: "<<r.nomePrimario<<endl;
o<<"ORARIO: "<<r.orari<<endl<<endl;
}

ostream & operator<<(ostream & o, const Paziente & p)
{
o<<"NOME PAZIENTE: "<<p.nomePaziente<<endl;
o<<"ETÀ: "<<p.eta<<endl;
o<<"NUMERO RICOVERI: "<<p.n_ricoveri<<endl<<endl;
}

ostream & operator<<(ostream & o, const Ospedale & os)
{
o<<os.nomeOsp;
}

main()
{
Ospedale O1("\t\t\t\tButchery Hospital","Rc");
cout<<O1<<endl<<endl<<endl;

Paziente p1 ("Leo",55,3);
Paziente p2 ("Andrea",13,1);
Paziente p3 ("Carlo",24,2);
Paziente p4 ("Cosimo",78,13);

Reparto r1 ("Chirurgia","Dot. Andrea",9.31);
Reparto r2 ("Neurologia","Dot. Leo",7.45);
Reparto r3 ("Oncologia","Dot. Carlo",8.31);
Reparto r4 ("Ginecologia","Dott.sa Chiara",15.45);
Reparto r5 ("Dermatologia","Dot. Nicola",8.15);
Reparto r6 ("Psichiatria","Dot. Cosimo",7.45);

r6.agg_Paz (p1); //problema
r6.agg_Paz (p2);
r2.agg_Paz (p4);
r2.agg_Paz (p1);
r2.agg_Paz (p3);


O1.agg_Rep(r1);
O1.agg_Rep(r2);
O1.agg_Rep(r3);
O1.agg_Rep(r4);
O1.agg_Rep(r5);
O1.agg_Rep(r6);
O1.stampa_rep();
O1.elenco_reparti(7.45);
cout<<O1.primario()<<endl<<endl;

O1.degenti(r2,r6);

system ("PAUSE");
return 0;
}

oregon
16-03-2007, 21:25
Ma quale errore?

Come si fa a dirti la causa di un errore se non accenni minimamente a cosa ti succede?

MItaly
16-03-2007, 21:47
Ma soprattutto... indenta un po' questo codice, così non si capisce niente!

LeleFT
17-03-2007, 11:44
E in più... specifica il linguaggio anche nel titolo, come previsto dal regolamento, oltre a dare alla discussione un titolo decente.


Qui chiudo.


Ciao. :ciauz:

Loading