Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Non riesco a trovare l'errore

    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:

    codice:
    #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_paz(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;
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma quale errore?

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

  3. #3
    Ma soprattutto... indenta un po' questo codice, così non si capisce niente!
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304

    Moderazione

    E in più... specifica il linguaggio anche nel titolo, come previsto dal regolamento, oltre a dare alla discussione un titolo decente.


    Qui chiudo.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.