Advertisement
Guest User

Untitled

a guest
Dec 7th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.43 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <string>
  4.  
  5. using namespace std;
  6.  
  7. class lista;
  8.  
  9. class magazin
  10. {
  11. private:
  12.     char nume_produs[20];
  13.     int nr_inregistrare;
  14.     int tip;
  15.     magazin *urm = NULL;
  16. public:
  17.     magazin(char n[20], int ni,int t)
  18.     {
  19.         strcpy(nume_produs, n);
  20.         nr_inregistrare = ni;
  21.         tip = t;
  22.     }
  23.     virtual void afisare()
  24.     {
  25.         cout << "\nNume:" << nume_produs;
  26.         cout << "\nNr_i:" << nr_inregistrare;
  27.     }
  28.     friend lista;
  29. };
  30.  
  31. class copii :public magazin
  32. {
  33. private:
  34.     int varsta;
  35.     char animatii[20];
  36. public:
  37.     copii(char n[20], int ni,int t, int v, char an[20]) :magazin(n, ni,t)
  38.     {
  39.         varsta = v;
  40.         strcpy(animatii, an);
  41.     }
  42.     virtual void afisare()
  43.     {
  44.         magazin::afisare();
  45.         cout << "\nVarsta:" << varsta;
  46.         cout << "\nAnimatie:" << animatii;
  47.     }
  48.     friend lista;
  49. };
  50.  
  51. class adulti :public magazin
  52. {
  53. private:
  54.     int marime;
  55.     char BsauF[20];
  56. public:
  57.     adulti(char n[20], int ni,int t, int m, char BF[20]) :magazin(n, ni,t)
  58.     {
  59.         marime = m;
  60.         strcpy(BsauF, BF);
  61.     }
  62.     virtual void afisare()
  63.     {
  64.         magazin::afisare();
  65.         cout << "\nMarime:" << marime;
  66.         cout << "\nBarbati sau Femei:" << BsauF;
  67.     }
  68.     friend lista;
  69. };
  70.  
  71. class lista
  72. {
  73. public:
  74.     magazin *head;
  75.     void adaugare(magazin *m);
  76.     void cautare(char nume[20]);
  77.     void stergere(int marime);
  78.     void afisare();
  79.  
  80. };
  81.  
  82. class dateMagazin
  83. {
  84. public:
  85.     char nume_produs[20];
  86.     int nr_inregistrare;
  87.  
  88.     friend istream & operator >>(istream &in, dateMagazin &magazin);
  89.     friend ostream & operator <<(ostream &out, dateMagazin &magazin);
  90.  
  91. };
  92.  
  93. istream & operator >>(istream &in, dateMagazin &magazin)
  94. {
  95.     cout << "\n--------------------------";
  96.     cout << "\nNume Produs:";
  97.     cin >> magazin.nume_produs;
  98.     cout << "\nNr. inregistrare:";
  99.     cin >> magazin.nr_inregistrare;
  100.     return in;
  101. }
  102.  
  103. ostream & operator <<(ostream &out, dateMagazin &magazin)
  104. {
  105.     cout << "\nDate produs";
  106.     cout << endl;
  107.     return out;
  108. }
  109.  
  110.  
  111. void lista::adaugare(magazin *m)
  112. {
  113.     magazin *p;
  114.     p = head;
  115.     if (head == NULL)
  116.     {
  117.         head = m;
  118.     }
  119.     else
  120.     {
  121.         while (p->urm != NULL && strcmp(p->urm->nume_produs,m->nume_produs) < 0)
  122.         {
  123.             p = p->urm;
  124.         }
  125.         m->urm = p->urm;
  126.         p->urm = m;
  127.     }
  128. }
  129.  
  130. void lista::stergere(int marime)
  131. {
  132.     magazin *p,*aux;
  133.     p = head;
  134.     adulti *a;
  135.     if (p->tip == 2)
  136.     {
  137.         a = (adulti*)p;
  138.         while (a->marime == marime && head!=NULL)
  139.         {
  140.             aux = head;
  141.             head = head->urm;
  142.             delete[] aux;
  143.             a = (adulti*)head;
  144.         }
  145.     }
  146.     p = head;
  147.     while(p->urm!=NULL)
  148.     {
  149.         if (p->urm->tip == 2)
  150.         {
  151.             a = (adulti*)(p->urm);
  152.         }
  153.         else
  154.         {
  155.             a = NULL;
  156.         }
  157.  
  158.         if (a != NULL && a->marime==marime)
  159.         {
  160.             aux = a;
  161.             p->urm = p->urm->urm;
  162.             delete[] aux;
  163.         }
  164.         p = p->urm;
  165.         if(p==NULL)
  166.         {
  167.             break;
  168.         }
  169.     }
  170. }
  171.  
  172. void lista::afisare()
  173. {
  174.     magazin *p;
  175.     p = head;
  176.     while (p != NULL)
  177.     {
  178.         p->afisare();
  179.         p = p->urm;
  180.     }
  181. }
  182.  
  183. void lista::cautare(char nume[20])
  184. {
  185.     magazin *p;
  186.     p = head;
  187.     while (p != NULL)
  188.     {
  189.         if (strcmp(nume, p->nume_produs) == 0)
  190.         {
  191.             p->afisare();
  192.         }
  193.         p = p->urm;
  194.     }
  195. }
  196.  
  197. class exceptionVarsta {};
  198.  
  199. void introducere(lista &l, int tip)
  200. {
  201.     magazin *a;
  202.     dateMagazin d;
  203.     cout << d;
  204.     cin >> d;
  205.     int varsta;
  206.     char animatii[20];
  207.     int marime;
  208.     char BsauF[20];
  209.     if (tip == 1)
  210.     {
  211.        
  212.         copii *c;
  213.         cout << "\nVarsta:";
  214.         cin >> varsta;
  215.         try
  216.         {
  217.             if (varsta < 0)
  218.             {
  219.                 throw exceptionVarsta();
  220.             }
  221.         }
  222.         catch (exceptionVarsta e)
  223.         {
  224.             do
  225.             {
  226.                 cout << "\nVarsta pozitiva:";
  227.                 cin >> varsta;
  228.             } while (varsta < 0);
  229.         }
  230.         cout << "\nAnimatii:";
  231.         cin >> animatii;
  232.         c = new copii(d.nume_produs, d.nr_inregistrare, tip, varsta, animatii);
  233.         a = c;
  234.         l.adaugare(a);
  235.     }
  236.     else
  237.     {
  238.         adulti *ad;
  239.         cout << "\nMarime:";
  240.         cin >> marime;
  241.         cout << "\nBarbati sau Femei:";
  242.         cin >> BsauF;
  243.         ad = new adulti(d.nume_produs, d.nr_inregistrare, tip, marime, BsauF);
  244.         a = ad;
  245.         l.adaugare(a);
  246.     }
  247.  
  248.    
  249. }
  250.  
  251. void main()
  252. {
  253.     lista l;
  254.     l.head = NULL;
  255.     int op;
  256.  
  257.     int tip;
  258.     do
  259.     {
  260.         cout << ("\n1.Introducere stoc");
  261.         cout << ("\n2.Afisare");
  262.         cout << ("\n3.Cautare nume");
  263.         cout << ("\n4.Stergere haine la pretul n=");
  264.         cout << ("\nOptiune:");
  265.         cin >> op;
  266.         switch (op)
  267.         {
  268.             case 1:
  269.             {
  270.                 cout << ("\n1.Copii");
  271.                 cout << ("\n2.Adulti");
  272.                 cout << ("\n1/2:");
  273.                 cin >> tip;
  274.                 introducere(l, tip);
  275.                 break;
  276.             }
  277.             case 2:
  278.             {
  279.                 l.afisare();
  280.                 break;
  281.             }
  282.             case 3:
  283.             {
  284.                 l.cautare("abc");
  285.             }
  286.             case 4:
  287.             {
  288.                 l.stergere(4);
  289.             }
  290.         }
  291.     } while (op != 9);
  292. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement