Advertisement
Guest User

Untitled

a guest
Dec 5th, 2019
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.51 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <fstream>
  4. #include <conio.h>
  5.  
  6. using namespace std;
  7.  
  8. class Lista;
  9.  
  10. class Electrocasnice
  11. {
  12. private:
  13. int tip;
  14. char *producator;
  15. int pret;
  16. Electrocasnice *urm;
  17. public:
  18. Electrocasnice(int t, char *prod, int price)
  19. {
  20. tip = t;
  21. producator = new char[strlen(prod) + 1];
  22. strcpy(producator, prod);
  23. pret = price;
  24. urm = NULL;
  25. }
  26. virtual void afisare()
  27. {
  28. cout << "\n";
  29. cout << "*-----------*" << endl;
  30. cout << "Producator: " << producator << endl;
  31. cout << "Pret: " << pret << endl;
  32. }
  33. friend class Lista;
  34. };
  35.  
  36. class Masina_Spalat :public Electrocasnice
  37. {
  38. private:
  39. int nr_programe;
  40. public:
  41. Masina_Spalat(int t, char *prod, int price, int n_programe) :Electrocasnice(t, prod, price)
  42. {
  43. nr_programe = n_programe;
  44. }
  45. void afisare(void)
  46. {
  47. Electrocasnice::afisare();
  48. cout << "Numar de programe: " << nr_programe << endl;
  49. }
  50. friend class Lista;
  51. };
  52.  
  53. class Aragaz :public Electrocasnice
  54. {
  55. private:
  56. char *tip_arzator;
  57. public:
  58. Aragaz(int t, char *prod, int price, char *t_arzator) :Electrocasnice(t, prod, price)
  59. {
  60. tip_arzator = new char[strlen(t_arzator) + 1];
  61. strcpy(tip_arzator, t_arzator);
  62. }
  63. void afisare(void)
  64. {
  65. Electrocasnice::afisare();
  66. cout << "Tip arzator: " << tip_arzator << endl;
  67. }
  68. friend class Lista;
  69. };
  70.  
  71. class Lista
  72. {
  73. public:
  74. Electrocasnice *prim;
  75. void adaugare(Electrocasnice *nou);
  76. void introducere(Lista &l, int t);
  77. void afisare(void);
  78. void salvare_fisier(void);
  79. void cautare(void);
  80. void stergere(void);
  81. };
  82.  
  83. void Lista::introducere(Lista &l, int t)
  84. {
  85. Electrocasnice *e;
  86.  
  87. char *producator = new char[20];
  88. int pret;
  89. int nr_programe;
  90. char *tip_arzator = new char[20];
  91.  
  92. cout << "Introduceti producatorul: " << endl;
  93. cin >> producator;
  94. cout << "Introduceti pretul: " << endl;
  95. cin >> pret;
  96. if (t == 0)
  97. {
  98. cout << "Introduceti numarul de programe: " << endl;
  99. cin >> nr_programe;
  100. Masina_Spalat *ms = new Masina_Spalat(0, producator, pret, nr_programe);
  101. e = ms;
  102. l.adaugare(e);
  103. }
  104. else if (t == 1)
  105. {
  106. cout << "Introduceti tipul de arzator: " << endl;
  107. cin >> tip_arzator;
  108. Aragaz *a = new Aragaz(1, producator, pret, tip_arzator);
  109. e = a;
  110. l.adaugare(e);
  111. }
  112. }
  113.  
  114. void Lista::adaugare(Electrocasnice *nou)
  115. {
  116. Electrocasnice *p;
  117. p = prim;
  118. if (!p)
  119. {
  120. prim = nou;
  121. }
  122. else if (p)
  123. {
  124. if ((strcmp(prim ->producator, nou->producator)) > 0)
  125. {
  126. nou->urm = prim;
  127. prim = nou;
  128. }
  129. else
  130. {
  131. while (p->urm && (strcmp(p->urm->producator, nou->producator) < 0))
  132. {
  133. p = p->urm;
  134. }
  135. nou->urm = p->urm;
  136. p->urm = nou;
  137. }
  138. }
  139. }
  140.  
  141. void Lista::afisare(void)
  142. {
  143. Electrocasnice *p;
  144. p = prim;
  145. while (p)
  146. {
  147. p->afisare();
  148. p = p->urm;
  149. }
  150. }
  151.  
  152. void Lista::cautare(void)
  153. {
  154. Electrocasnice *p;
  155. p = prim;
  156. char prod[20];
  157. cout << "Introduceti producatorul de cautat: " << endl;
  158. cin >> prod;
  159. while (p->urm && (strcmp(p->producator, prod)) != 0)
  160. {
  161. p = p->urm;
  162. }
  163. if ((strcmp(p->producator, prod)) == 0)
  164. {
  165. p->afisare();
  166. }
  167. else
  168. {
  169. cout << "Nu exista !" << endl;
  170. }
  171. }
  172.  
  173. void Lista::salvare_fisier(void)
  174. {
  175. Electrocasnice *p;
  176. p = prim;
  177. ofstream fis("fisier.txt");
  178. if (fis.is_open())
  179. {
  180. while (p)
  181. {
  182. fis << p->producator << endl;
  183. fis << p->pret << endl;
  184. fis << endl;
  185. p = p->urm;
  186. }
  187. }
  188. }
  189.  
  190. void Lista::stergere(void)
  191. {
  192. Electrocasnice *p;
  193. Electrocasnice *q;
  194. p = prim;
  195. char prod[20];
  196. cout << "Introduceti producatorul de sters: " << endl;
  197. cin >> prod;
  198. while ((strcmp(p->urm->producator, prod)) != 0 && p->urm)
  199. p = p->urm;
  200. q = p->urm;
  201. p->urm = q->urm;
  202. }
  203.  
  204.  
  205. int main(void)
  206. {
  207. Lista l;
  208. l.prim = NULL;
  209. int opt;
  210. do
  211. {
  212. cout << "1. Adaugati masina de spalat " << endl;
  213. cout << "2. Adaugati aragaz " << endl;
  214. cout << "3. Afisare electrocasnice " << endl;
  215. cout << "4. Cautare electrocasnice " << endl;
  216. cout << "5. Salvare electrocasnice in fisier " << endl;
  217. cout << "6. Stergere electrocasnic dupa producator " << endl;
  218. cout << "0. Iesire" << endl;
  219. cout << "Optiunea dumneavoastra este: " << endl;
  220. cin >> opt;
  221. switch (opt)
  222. {
  223. case 1:
  224. l.introducere(l, 0);
  225. break;
  226. case 2:
  227. l.introducere(l, 1);
  228. break;
  229. case 3:
  230. l.afisare();
  231. break;
  232. case 4:
  233. l.cautare();
  234. break;
  235. case 5:
  236. l.salvare_fisier();
  237. break;
  238. case 6:
  239. l.stergere();
  240. break;
  241. default:
  242. cout << "Optiune gresita & La revedere " << endl;
  243. break;
  244.  
  245. }
  246. } while (opt != 0);
  247.  
  248. system("pause");
  249. return 0;
  250. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement