SHARE
TWEET

Untitled

a guest Jan 29th, 2020 55 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.         }
  150.  
  151. }
  152.  
  153. void introducere(lista&l, int x)
  154. {
  155.     int tip_derivat;
  156.     char producator[50];
  157.     int cod_produs;
  158.     char rezolutie[50];
  159.     char dimensiune[50];
  160.     char soft_inclus[50];
  161.     int viteza_scaner;
  162.     char format[50];
  163.     char tip[50];
  164.     produs_magazin*prodMag;
  165.  
  166.     cout << "Introduceti producator:";
  167.     cin >> producator;
  168.     cout << "Introduceti cod produs:";
  169.     cin >> cod_produs;
  170.     cout << "Introduceti rezolutia:";
  171.     cin >> rezolutie;
  172.     cout << "Introduceti dimensiunea:";
  173.     cin >> dimensiune;
  174.  
  175.     if (x == 0)
  176.     {
  177.         scaner *Sc;
  178.         cout << "introduceti softul";
  179.         cin >> soft_inclus;
  180.         cout << "Introduceti viteza:";
  181.         cin >> viteza_scaner;
  182.  
  183.         Sc = new scaner(1, producator, cod_produs, rezolutie, dimensiune, soft_inclus, viteza_scaner);
  184.             prodMag = Sc;
  185.             l.adaugare(prodMag);
  186.     }
  187.  
  188.     else if (x == 1)
  189.     {
  190.         imprimanta*imprim;
  191.         cout << "introduceti format";
  192.         cin >> format;
  193.         cout << "introduceti tip";
  194.         cin >> tip;
  195.  
  196.         imprim = new imprimanta(2, producator, cod_produs, rezolutie, dimensiune, format, tip);
  197.         prodMag = imprim;
  198.         l.adaugare(prodMag);
  199.     }
  200.        
  201. }
  202.  
  203.  
  204. void lista::cautare(char*prod)
  205. {
  206.     produs_magazin*a;
  207.     a = head;
  208.     if (!a)
  209.         cout << "lista este goala";
  210.     else
  211.     {
  212.         while (a)
  213.         {
  214.             if (strcmp(a->urm->producator, prod) == 0)
  215.                 a->afisare();
  216.             a = a->urm;
  217.         }
  218.  
  219.     }
  220. }
  221.  
  222. void lista::stergere(char*prod)
  223. {
  224.     produs_magazin*p,*q;
  225.     p = q = head;
  226.     if (p)
  227.     {
  228.         while (p&& strcmp(p->producator, prod) != 0)
  229.         {
  230.             q = p;
  231.             p = p->urm;
  232.         }
  233.         if (p)
  234.         {
  235.             if (p != q)
  236.             {
  237.                 q->urm = p->urm;
  238.                 delete p;
  239.             }
  240.             else
  241.             {
  242.                 head = p->urm;
  243.                 delete p;
  244.             }
  245.         }
  246.         else
  247.             cout << "producatorul nu exista in lista ";
  248.     }
  249.     else
  250.         cout << "lista este vida";
  251.  
  252. }
  253.  
  254. void main()
  255. {
  256.     int opt;
  257.     lista l;
  258.     l.head = NULL;
  259.     do
  260.     {
  261.         system("cls");
  262.         cout << "1.adaugare scaner in lista.\n";
  263.         cout << "2.adaugare imprimanta in lista.\n";
  264.         cout << "3.afisare articol din lista.\n";
  265.         cout << "4.cautare.\n";
  266.         cout << "5.stergere.\n";
  267.         cout << "0.iesire.\n";
  268.         cin >> opt;
  269.         switch (opt)
  270.         {
  271.         case 1:introducere(l, 0);
  272.             break;
  273.         case 2:introducere(l, 1);
  274.             break;
  275.         case 3:l.afisare();
  276.             break;
  277.         case 4:char prod[20];
  278.             cout << "\Dati prod dupa care se cauta";
  279.             cin >> prod;
  280.             l.cautare(prod);
  281.             cout << "apasati pt continuare";
  282.             _getch;
  283.             break;
  284.         case 5:char produc[20];
  285.             cout << "\Dati prod dupa care se sterge";
  286.             cin >> produc;
  287.             l.stergere(produc);
  288.             cout << "apasati pt continuare";
  289.             _getch;
  290.             break;
  291.         case 0:
  292.             break;
  293.         default :cout << "comanda gresita";
  294.  
  295.         }
  296.            
  297.     } while (opt != 0);
  298. }
  299.  
  300.  
  301. //------------------------------------------------------------------------------------
  302. /*void Lista::Adaugare_Fata(Agentie *a)  //adaugare in fata listei (pusa in comentarii pt ca folosim adaugarea ordonata)
  303. {
  304. if (head == NULL)
  305. {
  306. head = a;
  307. }
  308. else
  309. {
  310. a->urm = head;
  311. head = a;
  312. }
  313. }
  314.  
  315. //--------------------------------------------------------------------------
  316. void Lista::Adaugare_Spate(Agentie *a)  //adaugare la sfarsitul listei (pusa in comentarii pt ca folosim adaugarea ordonata)
  317. {
  318. Agentie *p;
  319. if (head == NULL)
  320. {
  321. head = a;
  322. }
  323. else
  324. {
  325. p = head;
  326. while (p->urm != NULL)
  327. p = p->urm;
  328. p->urm = a;
  329. }
  330. }*/
  331. //------------------------------------------------------------------------------
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Top