Advertisement
Guest User

poo

a guest
Jan 29th, 2020
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.07 KB | None | 0 0
  1. #include<iostream>
  2. #include<string.h>
  3. #include<conio.h>
  4. using namespace std;
  5.  
  6. //struct adresa
  7. //{
  8. //  char *localitate, *tara, *strada;
  9. //  int cod_postal, numar;
  10. //};
  11. //
  12. //struct date_contact
  13. //{
  14. //  long int nr_telefon;
  15. //  char *email, *site, *facebook;
  16. //};
  17. //
  18. //typedef enum { piscina = 0, restaurant = 1, sala_conf = 2, sala_sport = 3 }dotari;
  19.  
  20.  
  21. class lista;
  22. class produs_magazin
  23.  
  24. {
  25.  
  26. private:
  27.     int tip_derivat;
  28.     char*producator;
  29.     int cod_produs;
  30.     char*rezolutie;
  31.     char*dimensiune;
  32.     produs_magazin*urm;
  33. public:
  34.     produs_magazin(int t, char*prod, int cod, char*rez, char*dim)
  35.     {
  36.         producator = new char[strlen(prod) + 1];
  37.         strcpy(producator, prod);
  38.         rezolutie = new char[strlen(rez) + 1];
  39.         strcpy(rezolutie, rez);
  40.         dimensiune = new char[strlen(dim) + 1];
  41.         strcpy(dimensiune, dim);
  42.         tip_derivat = t;
  43.         cod_produs = cod;
  44.         urm = NULL;
  45.     }
  46.  
  47.     virtual void afisare()
  48.     {
  49.         cout << "----------------------\n";
  50.         cout << "producator" << producator << endl;
  51.         cout << "cod produs" << cod_produs << endl;
  52.         cout << "rezolutie" << rezolutie << endl;
  53.         cout << "dimensiune" << dimensiune << endl;
  54.     }
  55.     friend class lista;
  56. };
  57.  
  58. class scaner:public produs_magazin
  59. {
  60. private:
  61.     char*soft_inclus;
  62.     int viteza_scaner;
  63. public:
  64.     scaner(int t, char*prod, int cod, char*rez, char*dim, char*soft, int viteza):produs_magazin(t, prod, cod, rez, dim)
  65.     {
  66.         soft_inclus = new char[strlen(soft) + 1];
  67.         strcpy(soft_inclus, soft);
  68.         viteza_scaner= viteza;
  69.     }
  70.  
  71.     void afisare()
  72.     {
  73.         produs_magazin::afisare();
  74.         cout << "soft inclus:" << soft_inclus << endl;
  75.         cout << "viteza_scaner:" << viteza_scaner << endl;
  76.     }friend class lista;
  77. };
  78.  
  79. class imprimanta :public produs_magazin
  80. {
  81. private:
  82.     char*format;
  83.     char*tip;
  84. public:
  85.     imprimanta(int t, char*prod, int cod, char*rez, char*dim, char*form, char*tp) :produs_magazin(t, prod, cod, rez, dim)
  86.     {
  87.         format = new char[strlen(form) + 1];
  88.         strcpy(format, form);
  89.         tip = new char[strlen(tp) + 1];
  90.         strcpy(tip, tp);
  91.     }
  92.  
  93.     void afisare()
  94.     {
  95.         produs_magazin::afisare();
  96.             cout << "format:" << format << endl;
  97.             cout << "tip:" << tip << endl;
  98.  
  99.     }friend class lista;
  100.  
  101. };
  102.  
  103. class lista
  104. {
  105. public:
  106.     produs_magazin*head;
  107.     void adaugare(produs_magazin *prod);
  108.     void afisare();
  109.     void cautare(char*prod);
  110.     void stergere(char *prod);
  111. };
  112.  
  113.  
  114.  
  115. void lista::adaugare(produs_magazin*a)
  116. {
  117.     produs_magazin*p;
  118.     p = head;
  119.     if (p)
  120.     {
  121.         if (strcmp(a->producator, p->producator) < 0)
  122.         {
  123.             a->urm = head;
  124.             head = a;
  125.         }
  126.         else
  127.         {
  128.             while (p->urm && strcmp((p->urm)->producator, a->producator) < 0)
  129.                 p = p->urm;
  130.             a->urm = p->urm;
  131.             p->urm = a;
  132.         }
  133.     }
  134.     else
  135.         head = a;
  136. }
  137.  
  138. void lista::afisare()
  139. {
  140.     produs_magazin*a;
  141.     a = head;
  142.     if (!a)
  143.         cout << "lista este goala";
  144.     else
  145.         while (a)
  146.         {
  147.             a->afisare();
  148.             a = a->urm;
  149.             _getch();
  150.         }
  151.  
  152. }
  153.  
  154. void introducere(lista&l, int x)
  155. {
  156.     int tip_derivat;
  157.     char producator[50];
  158.     int cod_produs;
  159.     char rezolutie[50];
  160.     char dimensiune[50];
  161.     char soft_inclus[50];
  162.     int viteza_scaner;
  163.     char format[50];
  164.     char tip[50];
  165.     produs_magazin*prodMag;
  166.  
  167.     cout << "Introduceti producator:";
  168.     cin >> producator;
  169.     cout << "Introduceti cod produs:";
  170.     cin >> cod_produs;
  171.     cout << "Introduceti rezolutia:";
  172.     cin >> rezolutie;
  173.     cout << "Introduceti dimensiunea:";
  174.     cin >> dimensiune;
  175.  
  176.     if (x == 0)
  177.     {
  178.         scaner *Sc;
  179.         cout << "introduceti softul";
  180.         cin >> soft_inclus;
  181.         cout << "Introduceti viteza:";
  182.         cin >> viteza_scaner;
  183.  
  184.         Sc = new scaner(1, producator, cod_produs, rezolutie, dimensiune, soft_inclus, viteza_scaner);
  185.             prodMag = Sc;
  186.             l.adaugare(prodMag);
  187.     }
  188.  
  189.     else if (x == 1)
  190.     {
  191.         imprimanta*imprim;
  192.         cout << "introduceti format";
  193.         cin >> format;
  194.         cout << "introduceti tip";
  195.         cin >> tip;
  196.  
  197.         imprim = new imprimanta(2, producator, cod_produs, rezolutie, dimensiune, format, tip);
  198.         prodMag = imprim;
  199.         l.adaugare(prodMag);
  200.     }
  201.        
  202. }
  203.  
  204. void lista::cautare(char*prod)
  205. {
  206.     produs_magazin*m;
  207.     m = head;
  208.     while (m->urm != NULL && strcmp(m->urm->producator, prod) != 0)
  209.         m = m->urm;
  210.     if (strcmp(m->urm->producator, prod) == 0)
  211.         cout << "elem nu se gaseste";
  212. }
  213.  
  214. void lista::stergere(char*prod)
  215. {
  216.     produs_magazin*p,*q;
  217.     p = q = head;
  218.     if (p)
  219.     {
  220.         while (p&& strcmp(p->producator, prod) != 0)
  221.         {
  222.             q = p;
  223.             p = p->urm;
  224.         }
  225.         if (p)
  226.         {
  227.             if (p != q)
  228.             {
  229.                 q->urm = p->urm;
  230.                 delete p;
  231.             }
  232.             else
  233.             {
  234.                 head = p->urm;
  235.                 delete p;
  236.             }
  237.         }
  238.         else
  239.             cout << "producatorul nu exista in lista ";
  240.     }
  241.     else
  242.         cout << "lista este vida";
  243.  
  244. }
  245.  
  246. void main()
  247. {
  248.     int opt;
  249.     lista l;
  250.     l.head = NULL;
  251.     do
  252.     {
  253.         system("cls");
  254.         cout << "1.adaugare scaner in lista.\n";
  255.         cout << "2.adaugare imprimanta in lista.\n";
  256.         cout << "3.afisare articol din lista.\n";
  257.         cout << "4.cautare.\n";
  258.         cout << "5.stergere.\n";
  259.         cout << "0.iesire.\n";
  260.         cin >> opt;
  261.         switch (opt)
  262.         {
  263.         case 1:introducere(l, 0);
  264.             break;
  265.         case 2:introducere(l, 1);
  266.             break;
  267.         case 3:l.afisare();
  268.             break;
  269.         case 4:char prod[20];
  270.             cout << "\Dati prod dupa care se cauta";
  271.             cin >> prod;
  272.             l.cautare(prod);
  273.             cout << "apasati pt continuare";
  274.             _getch;
  275.             break;
  276.         case 5:char produc[20];
  277.             cout << "\Dati prod dupa care se sterge";
  278.             cin >> produc;
  279.             l.stergere(produc);
  280.             cout << "apasati pt continuare";
  281.             _getch;
  282.             break;
  283.         case 0:
  284.             break;
  285.         default :cout << "comanda gresita";
  286.  
  287.         }
  288.            
  289.     } while (opt != 0);
  290. }
  291.  
  292.  
  293. //------------------------------------------------------------------------------------
  294. /*void Lista::Adaugare_Fata(Agentie *a)  //adaugare in fata listei (pusa in comentarii pt ca folosim adaugarea ordonata)
  295. {
  296. if (head == NULL)
  297. {
  298. head = a;
  299. }
  300. else
  301. {
  302. a->urm = head;
  303. head = a;
  304. }
  305. }
  306.  
  307. //--------------------------------------------------------------------------
  308. void Lista::Adaugare_Spate(Agentie *a)  //adaugare la sfarsitul listei (pusa in comentarii pt ca folosim adaugarea ordonata)
  309. {
  310. Agentie *p;
  311. if (head == NULL)
  312. {
  313. head = a;
  314. }
  315. else
  316. {
  317. p = head;
  318. while (p->urm != NULL)
  319. p = p->urm;
  320. p->urm = a;
  321. }
  322. }*/
  323. //------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement