PDA

View Full Version : c++ Liste di oggetti probelma con stampa


ValeLL
17-09-2015, 16:42
Salve a tutti, dovrei fare questo programma :

Siano date le seguenti due classi per la gestione di un settore pubblico di un generico ente (es. comune di Roma):
1) classe Settore, caratterizzata dai dati membri: nome del settore (codSettore: string); numero reparti (NRep: int); costruttore; metodi di accesso ai dati;
2) classe Ufficio derivata pubblica da Settore, caratterizzata dai dati membri: nome ufficio (codUfficio: string); numero impiegati (num_imp: int); numero pratiche assegnate (num_pratiche: int); costruttori; metodi di accesso ai dati.
A. Si implementino i dati membro, ed in particolare i metodi, delle classi Settore e Ufficio.
B. Sviluppare un main in cui vi sia un’opportuna struttura dati Ente degli elementi trattati, contenente tutte le informazioni sui relativi settori e uffici corrispondenti. Si organizzi un menu (loop) che consenta le seguenti operazioni:
1. Inserimento dei dati per settore e ufficio;
2. Visualizzare tutti gli uffici, e il relativo settore di appartenenza, in cui il numero delle pratiche assegnate superi di tre volte il numero degli impiegati;
3. Visualizzazione di tutti gli uffici, e relative informazioni, di un dato settore preso in input.

Ho dei problemi con la stampa.Non so da dove iniziare con il punto 2 e 3. potete aiutarmi ?


#include<iostream>
#include<cstring>
using namespace std;

class Settore{

private:

string CodSett;
int NRep;

public:

Settore();
Settore(string, int);


void setCodSett(string);
void setNRep(int);

string getCodSett();
int getNRep();

void Stampa();

};

Settore::Settore(string cod, int nr){

this->CodSett=cod;
this->NRep=nr;

}

string Settore::getCodSett(){

return this->CodSett;

}

int Settore::getNRep(){

return this->NRep;

}

void Settore::setCodSett(string cod_sett){

this->CodSett=cod_sett;

}

void Settore::setNRep(int n_rep){

this->NRep=n_rep;

}

void Settore::Stampa(){

cout<<"Settore di appartenenza: "<<this->getCodSett()<<endl;
cout<<"Numero reparti: "<<this->getNRep()<<endl<<endl;

}

class Ufficio: public Settore{

private:

string CodUff;
int Num_imp;
int Num_pratiche;

public:

Ufficio();
Ufficio(string, int, string, int, int);

void setCodUff(string);
void setNum_imp(int);
void setNum_pratiche(int);

string getCodUff();
int getNum_imp();
int getNum_pratiche();

void Stampa();

};

Ufficio::Ufficio(string cods, int nr, string codu, int nd, int np): Settore(cods,nr){

this->CodUff=codu;
this->Num_imp=nd;
this->Num_pratiche=np;

}

void Ufficio::setCodUff(string cod_uff){

this->CodUff=cod_uff;

}

void Ufficio::setNum_imp(int num_imp){

this->Num_imp=num_imp;

}

void Ufficio::setNum_pratiche(int num_pratiche){

this->Num_pratiche=num_pratiche;

}

string Ufficio::getCodUff(){

return this->CodUff;

}

int Ufficio::getNum_imp(){

return this->Num_imp;

}

int Ufficio::getNum_pratiche(){

return this->Num_pratiche;

}

void Ufficio::Stampa(){

cout<<"Codice ufficio: "<<this->getCodUff()<<endl;
cout<<"Numero impiegati: "<<this->getNum_imp()<<endl;
cout<<"Numero pratiche: "<<this->getNum_pratiche()<<endl<<endl;;

}

class NodoUfficio{

public:


NodoUfficio *next;
Ufficio *info;

NodoUfficio(Ufficio*);

};

NodoUfficio::NodoUfficio(Ufficio *u){

this->info=u;
this->next=NULL;


}

class ListaEnte{

public:


NodoUfficio *start;

ListaEnte();
void Add(Ufficio*);
void Stampa();

};

ListaEnte::ListaEnte(){

this->start=NULL;

}

void ListaEnte::Add(Ufficio *u){

NodoUfficio *walker = this->start;

if(this->start == NULL)
{
start=new NodoUfficio(u);
}
else
{
while(walker->next != NULL)
{

walker=walker->next;

}

walker->next=new NodoUfficio(u);

}
}

void ListaEnte::Stampa(){

NodoUfficio *walker= this->start;
while(walker != NULL)
{
walker->info->Stampa();
walker=walker->next;
}

}



int main(){

ListaEnte *lista = new ListaEnte();
Ufficio *uff=NULL;


string cod_uff;
string cod_sett;
int n_rep;
int n_dip;
int n_pratiche;

bool esci=false;
int input;

string CodSett_cercato;


do{
cout<<"**MENU'**"<<endl;
cout<<"1-Inserimento dei dati per settore e ufficio"<<endl;
cout<<"2-Visualizzare tutti gli uffici, e il relativo settore di appartenenza, in cui il numero delle pratiche assegnate superi di tre volte il numero degli impiegati;"<<endl;
cout<<"3-Visualizzazione di tutti gli uffici, e relative informazioni, di un dato settore preso in input"<<endl;
cout<<"4-Esci"<<endl;
cin>>input;

switch(input){

case 1:

cout<<"Inserisci i dati "<<endl<<endl;

cout<<"Inserisci codice settore: ";
cin>>cod_sett;

cout<<endl;
cout<<"Inserisci numero reparti: ";
cin>>n_rep;

cout<<endl;
cout<<"Inserisci codice ufficio: ";
cin>>cod_uff;

cout<<endl;
cout<<"Inserisci numero dipendenti:";
cin>>n_dip;

cout<<endl;
cout<<"Inserisci numero pratiche:";
cin>>n_pratiche;

cout<<endl;

uff=new Ufficio(cod_sett,n_rep,cod_uff,n_dip,n_pratiche);

lista->Add(uff);

break;

case 2:



break;

case 3:


break;

case 4:

esci=true;

break;

default:

cout<<"**Selzione errata**"<<endl;

break;


}
}while(!esci);


}