darkjessy94

Appartamento stanze colore uml to c++ gabbo

Oct 5th, 2017
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.47 KB | None | 0 0
  1. #include <iostream>
  2. #include <list>
  3. #include <string>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. using namespace std;
  7. ///DEFINISCO LA CLASSE COLORE
  8. class colore{
  9. string descrizione;
  10. public:
  11. colore(){}
  12. ~colore(){}
  13. void setcolore(string d){descrizione=d;}
  14. string getcolore(){return descrizione;}
  15. };
  16.  
  17.  
  18. ///DEFINISCO LA CLASSE STANZA
  19. class stanza{
  20. string tipo;
  21. colore co;
  22. public:
  23. stanza(string t):tipo(t){}
  24. stanza(){}
  25. ~stanza(){}
  26. void fissacolore(colore c){co.setcolore(c.getcolore());}
  27. string getipo(){return tipo;}
  28. void setipo(string t){tipo=t;}
  29. string getcolore(){return co.getcolore();}
  30.  
  31.  
  32. };
  33. ///DEFINISCO LA CLASSE APPARTAMENTO
  34. class appartamento{
  35. int numstanze;
  36. string nome;
  37. list <stanza> lista;///lista di stanze
  38.  
  39. public:
  40. appartamento(string n):numstanze(0),nome(n){}
  41. appartamento(){}
  42. ~appartamento(){lista.clear();}
  43. string getnome(){return nome;}
  44. int getnum(){return numstanze;}
  45.  
  46. void aggiungistanza(stanza s){
  47. lista.push_back(s); numstanze++;
  48. }
  49. void clearlista(){lista.clear();numstanze=0;}
  50. list<stanza> getlista(){return lista;}
  51.  
  52. void eliminastanza(string tipo){ ///metodo per eliminare una stanza dato un tipo(attributo della classe "stanza")
  53. list<stanza>::iterator p;
  54. stanza temp;short c=0;
  55. for(p=lista.begin();p!=lista.end();p++)
  56. {
  57. temp=*p;
  58. if(temp.getipo()==tipo)
  59. {
  60. p=lista.erase(p);
  61. cout<<"Stanza eliminata"<<endl;c++;
  62. }
  63.  
  64. }
  65. if(c==0)
  66. cout<<"stanza non eliminabile!"<<endl;
  67. }
  68.  
  69. void eliminastanzass(stanza s){ ///metodo per eliminare stanza dato un intero che diventera' poi stanza nel main
  70. list<stanza>::iterator p;
  71. stanza temp;short c=0;
  72. for(p=lista.begin();p!=lista.end();p++)
  73. {
  74. temp=*p;
  75. if(temp.getcolore()==s.getcolore()&&temp.getipo()==s.getipo())
  76. {
  77. p=lista.erase(p);
  78. cout<<"Stanza eliminata"<<endl;c++;
  79. }
  80.  
  81. }
  82. if(c==0)
  83. cout<<"stanza non eliminabile!"<<endl;
  84. }
  85.  
  86. void qualestanza(int i)///metodo che estrae la stanza scelta dall intero e la stampa
  87. {
  88. stanza temp(" ");
  89. short x=1;
  90. list<stanza>::iterator p;
  91. for(p=lista.begin();p!=lista.end();p++)
  92. {
  93. if(x==i)
  94. temp=*p;
  95. x++;
  96. }
  97. if(temp.getipo()!=" ")
  98. cout<<"tipo stanza= "<<temp.getipo()<<endl<<"colore stanza= "<<temp.getcolore()<<endl;
  99. else
  100. cout<<"la stanza non esiste"<<endl;
  101. }
  102.  
  103. stanza qualestanzai(int i)///metodo che ritorna la stanza scelta da un intero 1<i<lista.size()
  104. {
  105. stanza temp(" ");
  106. short x=1;
  107. list<stanza>::iterator p;
  108. for(p=lista.begin();p!=lista.end();p++)
  109. {
  110. if(x==i)
  111. temp=*p;
  112. x++;
  113. }
  114. return temp;
  115. }
  116. };
  117.  
  118.  
  119. ///funzione esterna per colorare tutte le stanze dato un colore c
  120. void colorastanze(appartamento *t,colore c){
  121. appartamento nn;
  122. stanza temp;
  123. list <stanza>::iterator p;
  124. list <stanza>lista;
  125. lista=t->getlista();
  126. for(p=lista.begin();p!=lista.end();p++)
  127. {
  128. temp=*p;
  129. temp.fissacolore(c);
  130. nn.aggiungistanza(temp);
  131. }
  132. *t=nn;
  133.  
  134.  
  135.  
  136. }
  137.  
  138. int main()
  139. {string nome;
  140. cout<<"Come vuoi chiamare il tuo appartamento?"<<endl;
  141. fflush(stdin);
  142. getline(cin,nome);
  143. appartamento a(nome);
  144. stanza temp;
  145. string tipo; string col;
  146. colore co;
  147. cout<<"il tuo appartamento si chiama: "<<a.getnome()<<endl;
  148. short i=9;int c;
  149.  
  150. while(i!=0)
  151. {
  152. 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;
  153. cout<<"digita 4 per eliminare una stanza (dato tipo)"<<endl<<"Digita 5 per eliminare stanza (dato numero)"<<endl;
  154. cin>>i;
  155. switch (i){
  156. case 1: {cout<<"inserisci tipo stanza"<<endl; cin>>tipo; temp.setipo(tipo);
  157. cout<<"inserisci colore stanza"<<endl; cin>>col;co.setcolore(col); temp.fissacolore(co); a.aggiungistanza(temp);break;
  158. }
  159. case 2: cout<<"Quale stanza vuoi stampare?"<<endl; cin>>c; a.qualestanza(c);break;
  160. case 3: cout<<"Digita colore che vuoi assegnare a tutte le stanze"<<endl;cin>>col; co.setcolore(col); colorastanze(&a,co);break;
  161. case 4: cout<<"digita tipo di stanza che vuoi eliminare"<<endl; cin>>tipo; a.eliminastanza(tipo);break;
  162. case 5: cout<<"digita indice della stanza da eliminare"<<endl; cin>>c; temp=a.qualestanzai(c);a.eliminastanzass(temp);break;
  163. }
  164. system("Pause");
  165. system("cls");
  166. }
  167. return 0;
  168. }
Add Comment
Please, Sign In to add comment