Advertisement
Guest User

problema POO

a guest
Jan 22nd, 2020
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.72 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <vector>
  4. using namespace std;
  5.  
  6. class Contact
  7. {
  8. string nume, prenume;
  9. long nr_telefon;
  10. string adresa_email;
  11. public:
  12. Contact()
  13. {
  14. nume = prenume = " ";
  15. nr_telefon = -1;
  16. adresa_email = " ";
  17. }
  18. Contact(string nume, string prenume, long nr_telefon, string adresa_email)
  19. {
  20. this->nume = nume;
  21. this->prenume = prenume;
  22. this->nr_telefon = nr_telefon;
  23. this->adresa_email = adresa_email;
  24. }
  25. Contact(const Contact& X)
  26. {
  27. this->nume = X.nume;
  28. this->prenume = X.prenume;
  29. this->nr_telefon = X.nr_telefon;
  30. this->adresa_email = X.adresa_email;
  31. }
  32. Contact operator= (Contact& X)
  33. {
  34. this->nume = X.nume;
  35. this->prenume = X.prenume;
  36. this->nr_telefon = X.nr_telefon;
  37. this->adresa_email = X.adresa_email;
  38. return *this;
  39. }
  40.  
  41. friend ostream& operator<< (ostream&, Contact&);
  42. };
  43.  
  44. ostream& operator<< (ostream& os, Contact& X)
  45. {
  46. os << "Nume: " << X.nume << " Prenume: " << X.prenume << endl;
  47. os << "Nr Telefon: " << X.nr_telefon << endl;
  48. os << "Email: " << X.adresa_email << endl;
  49. return os;
  50. }
  51.  
  52. class Data
  53. {
  54. int zi, luna, an;
  55. public:
  56. Data()
  57. {
  58. zi = luna = an = -1;
  59. }
  60. Data(int zi, int luna, int an)
  61. {
  62. this->zi = zi;
  63. this->luna = luna;
  64. this->an = an;
  65. }
  66. Data(Data& X)
  67. {
  68. this->zi = X.zi;
  69. this->luna = X.luna;
  70. this->an = X.an;
  71. }
  72. Data operator= (Data& X)
  73. {
  74. this->zi = X.zi;
  75. this->luna = X.luna;
  76. this->an = X.an;
  77. return *this;
  78. }
  79. bool operator== (Data& X)
  80. {
  81. if (this->zi == X.zi && this->luna == X.luna && this->an == X.an)
  82. return true;
  83. else
  84. return false;
  85. }
  86.  
  87. friend ostream& operator<< (ostream&, Data&);
  88. };
  89.  
  90. ostream& operator<< (ostream& os, Data& X)
  91. {
  92. os << X.zi << "/" << X.luna << "/" << X.an;
  93. return os;
  94. }
  95.  
  96. class Ora
  97. {
  98. int ora, minute;
  99. public:
  100. Ora() { ora = minute = -1; }
  101. Ora(int ora, int minute)
  102. {
  103. this->ora = ora;
  104. this->minute = minute;
  105. }
  106. Ora(Ora& X)
  107. {
  108. this->ora = X.ora;
  109. this->minute = X.minute;
  110. }
  111. Ora operator= (Ora& X)
  112. {
  113. this->ora = X.ora;
  114. this->minute = X.minute;
  115. return *this;
  116. }
  117. bool operator== (Ora& X)
  118. {
  119. if (this->ora == X.ora && this->minute == X.minute)
  120. return true;
  121. else
  122. return false;
  123. }
  124.  
  125. friend ostream& operator<< (ostream&, Ora&);
  126. };
  127.  
  128. ostream& operator<< (ostream& os, Ora& X)
  129. {
  130. os << X.ora << ":" << X.minute;
  131. return os;
  132. }
  133.  
  134. class Eveniment
  135. {
  136. protected:
  137. Data data;
  138. Ora ora;
  139. string descriere;
  140. public:
  141. Eveniment()
  142. {
  143. Data data_null;
  144. data = data_null;
  145. Ora ora_null;
  146. ora = ora_null;
  147. descriere = " ";
  148. }
  149. Eveniment(Data d, Ora ora, string descriere)
  150. {
  151. this->data = d;
  152. this->ora = ora;
  153. this->descriere = descriere;
  154. }
  155.  
  156. virtual int durata() = 0;
  157. virtual bool suprapune() = 0;
  158.  
  159. Data getData()
  160. {
  161. return data;
  162. }
  163. Ora getOra()
  164. {
  165. return ora;
  166. }
  167.  
  168. void afis()
  169. {
  170. cout << "Data -> " << data << " Ora -> " << ora << " Descriere-> " << descriere << endl;
  171. }
  172. };
  173.  
  174. class Alarma : public Eveniment
  175. {
  176. public:
  177. Alarma() :Eveniment() {};
  178. Alarma(Data d, Ora ora, string descriere) :Eveniment(d, ora, descriere) {};
  179.  
  180. int durata()
  181. {
  182. int ans = 0;
  183. return ans;
  184. }
  185. bool suprapune()
  186. {
  187. return true;
  188. }
  189. };
  190.  
  191. class Activitate :public Eveniment
  192. {
  193. Contact contact;
  194. public:
  195. Activitate() :Eveniment()
  196. {
  197. Contact contact_null;
  198. contact = contact_null;
  199. }
  200. Activitate(Data d, Ora ora, string descriere) :Eveniment(d, ora, descriere)
  201. {
  202. Contact contact_null;
  203. contact = contact_null;
  204. }
  205. Activitate(Data d, Ora ora, string descriere, Contact contact) :Eveniment(d, ora, descriere)
  206. {
  207. this->contact = contact;
  208. }
  209.  
  210. int durata()
  211. {
  212. int ans = 30;
  213. return ans;
  214. }
  215. bool suprapune()
  216. {
  217. return false;
  218. }
  219. };
  220.  
  221. class Sedinta :public Eveniment
  222. {
  223. vector<Contact> participanti;
  224. public:
  225. Sedinta() :Eveniment() {};
  226. Sedinta(Data d, Ora ora, string descriere, vector<Contact> contacte) :Eveniment(d, ora, descriere)
  227. {
  228. participanti = contacte;
  229. }
  230.  
  231. int durata()
  232. {
  233. int ans = 30;
  234. return ans;
  235. }
  236. bool suprapune()
  237. {
  238. return false;
  239. }
  240. };
  241.  
  242. void afiseaza_evenimente(vector<Eveniment*> v, Data d)
  243. {
  244. vector<Eveniment*> evenimente_azi;
  245. for (int i = 0; i < int(v.size()); i++)
  246. {
  247. if (v[i]->getData() == d)
  248. {
  249. evenimente_azi.push_back(v[i]);
  250. }
  251. }
  252. for (int i = 0; i < int(evenimente_azi.size()); i++)
  253. evenimente_azi[i]->afis();
  254. }
  255.  
  256. void afiseaza_eveniment_actual(vector<Eveniment*> v, Data d, Ora o)
  257. {
  258. bool exista_evenimente = false;
  259. for (int i = 0; i < int(v.size()); i++)
  260. {
  261. if (v[i]->getData() == d && v[i]->getOra() == o)
  262. {
  263. v[i]->afis();
  264. exista_evenimente = true;
  265. }
  266. }
  267. if (exista_evenimente == false)
  268. cout << "Nu exista evenimente la momentul actual." << endl;
  269. }
  270.  
  271. int main()
  272. {
  273. vector<Eveniment*> v;
  274.  
  275. Data data1(22, 01, 2020);
  276. Ora ora1(11, 30);
  277. Eveniment* ev1 = new Alarma(data1, ora1, "pauza");
  278. v.push_back(ev1);
  279.  
  280. Data data2(22, 01, 2020);
  281. Ora ora2(12, 00);
  282. vector<Contact> contacte1;
  283. Contact c1("Gigel", "Smecheru", 735789456, "gigel@yahoo.ro");
  284. Contact c2("Bebita", "Judokanu", 723456123, "judokanu@gmail.ro");
  285. contacte1.push_back(c1);
  286. contacte1.push_back(c2);
  287. Eveniment* ev2 = new Sedinta(data2, ora2, "sedinta cu barosanii", contacte1);
  288. v.push_back(ev2);
  289.  
  290. Data data3(21, 01, 2020);
  291. Ora ora3(15,00);
  292. Contact secretara("Gratiela", "Panamera", 761693852, "secretara_ta@hotmail.com");
  293. Eveniment* ev3 = new Activitate(data3, ora3, "cafea cu Gratiela", secretara);
  294. v.push_back(ev3);
  295.  
  296. for (int i = 0; i < int(v.size()); i++)
  297. v[i]->afis();
  298.  
  299. cout << "Evenimentele din data " << data3 << ": " << endl;
  300. afiseaza_evenimente(v, data3);
  301.  
  302. cout << "Evenimentul actual: " << endl;
  303. afiseaza_eveniment_actual(v, data1, ora2);
  304.  
  305. return 0;
  306. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement