Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <list>
- #include <string>
- #include <stdio.h>
- #include <stdlib.h>
- using namespace std;
- ///DEFINISCO LA CLASSE COLORE
- class colore{
- string descrizione;
- public:
- colore(){}
- ~colore(){}
- void setcolore(string d){descrizione=d;}
- string getcolore(){return descrizione;}
- };
- ///DEFINISCO LA CLASSE STANZA
- class stanza{
- string tipo;
- colore co;
- public:
- stanza(string t):tipo(t){}
- stanza(){}
- ~stanza(){}
- void fissacolore(colore c){co.setcolore(c.getcolore());}
- string getipo(){return tipo;}
- void setipo(string t){tipo=t;}
- string getcolore(){return co.getcolore();}
- };
- ///DEFINISCO LA CLASSE APPARTAMENTO
- class appartamento{
- int numstanze;
- string nome;
- list <stanza> lista;///lista di stanze
- public:
- appartamento(string n):numstanze(0),nome(n){}
- appartamento(){}
- ~appartamento(){lista.clear();}
- string getnome(){return nome;}
- int getnum(){return numstanze;}
- void aggiungistanza(stanza s){
- lista.push_back(s); numstanze++;
- }
- void clearlista(){lista.clear();numstanze=0;}
- list<stanza> getlista(){return lista;}
- void eliminastanza(string tipo){ ///metodo per eliminare una stanza dato un tipo(attributo della classe "stanza")
- list<stanza>::iterator p;
- stanza temp;short c=0;
- for(p=lista.begin();p!=lista.end();p++)
- {
- temp=*p;
- if(temp.getipo()==tipo)
- {
- p=lista.erase(p);
- cout<<"Stanza eliminata"<<endl;c++;
- }
- }
- if(c==0)
- cout<<"stanza non eliminabile!"<<endl;
- }
- void eliminastanzass(stanza s){ ///metodo per eliminare stanza dato un intero che diventera' poi stanza nel main
- list<stanza>::iterator p;
- stanza temp;short c=0;
- for(p=lista.begin();p!=lista.end();p++)
- {
- temp=*p;
- if(temp.getcolore()==s.getcolore()&&temp.getipo()==s.getipo())
- {
- p=lista.erase(p);
- cout<<"Stanza eliminata"<<endl;c++;
- }
- }
- if(c==0)
- cout<<"stanza non eliminabile!"<<endl;
- }
- void qualestanza(int i)///metodo che estrae la stanza scelta dall intero e la stampa
- {
- stanza temp(" ");
- short x=1;
- list<stanza>::iterator p;
- for(p=lista.begin();p!=lista.end();p++)
- {
- if(x==i)
- temp=*p;
- x++;
- }
- if(temp.getipo()!=" ")
- cout<<"tipo stanza= "<<temp.getipo()<<endl<<"colore stanza= "<<temp.getcolore()<<endl;
- else
- cout<<"la stanza non esiste"<<endl;
- }
- stanza qualestanzai(int i)///metodo che ritorna la stanza scelta da un intero 1<i<lista.size()
- {
- stanza temp(" ");
- short x=1;
- list<stanza>::iterator p;
- for(p=lista.begin();p!=lista.end();p++)
- {
- if(x==i)
- temp=*p;
- x++;
- }
- return temp;
- }
- };
- ///funzione esterna per colorare tutte le stanze dato un colore c
- void colorastanze(appartamento *t,colore c){
- appartamento nn;
- stanza temp;
- list <stanza>::iterator p;
- list <stanza>lista;
- lista=t->getlista();
- for(p=lista.begin();p!=lista.end();p++)
- {
- temp=*p;
- temp.fissacolore(c);
- nn.aggiungistanza(temp);
- }
- *t=nn;
- }
- int main()
- {string nome;
- cout<<"Come vuoi chiamare il tuo appartamento?"<<endl;
- fflush(stdin);
- getline(cin,nome);
- appartamento a(nome);
- stanza temp;
- string tipo; string col;
- colore co;
- cout<<"il tuo appartamento si chiama: "<<a.getnome()<<endl;
- short i=9;int c;
- while(i!=0)
- {
- cout<<"digita 1 per aggiungere una stanza"<<endl<<"digita 2 per estrarre una stanza"<<endl<<"digita 0 per uscire"<<endl<<"digita 3 per cambiare colore a tutte le stanze"<<endl;
- cout<<"digita 4 per eliminare una stanza (dato tipo)"<<endl<<"Digita 5 per eliminare stanza (dato numero)"<<endl;
- cin>>i;
- switch (i){
- case 1: {cout<<"inserisci tipo stanza"<<endl; cin>>tipo; temp.setipo(tipo);
- cout<<"inserisci colore stanza"<<endl; cin>>col;co.setcolore(col); temp.fissacolore(co); a.aggiungistanza(temp);break;
- }
- case 2: cout<<"Quale stanza vuoi stampare?"<<endl; cin>>c; a.qualestanza(c);break;
- case 3: cout<<"Digita colore che vuoi assegnare a tutte le stanze"<<endl;cin>>col; co.setcolore(col); colorastanze(&a,co);break;
- case 4: cout<<"digita tipo di stanza che vuoi eliminare"<<endl; cin>>tipo; a.eliminastanza(tipo);break;
- case 5: cout<<"digita indice della stanza da eliminare"<<endl; cin>>c; temp=a.qualestanzai(c);a.eliminastanzass(temp);break;
- }
- system("Pause");
- system("cls");
- }
- return 0;
- }
Add Comment
Please, Sign In to add comment