Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- #include <string>
- using namespace std;
- class lista;
- class magazin
- {
- private:
- char nume_produs[20];
- int nr_inregistrare;
- int tip;
- magazin *urm = NULL;
- public:
- magazin(char n[20], int ni,int t)
- {
- strcpy(nume_produs, n);
- nr_inregistrare = ni;
- tip = t;
- }
- virtual void afisare()
- {
- cout << "\nNume:" << nume_produs;
- cout << "\nNr_i:" << nr_inregistrare;
- }
- friend lista;
- };
- class copii :public magazin
- {
- private:
- int varsta;
- char animatii[20];
- public:
- copii(char n[20], int ni,int t, int v, char an[20]) :magazin(n, ni,t)
- {
- varsta = v;
- strcpy(animatii, an);
- }
- virtual void afisare()
- {
- magazin::afisare();
- cout << "\nVarsta:" << varsta;
- cout << "\nAnimatie:" << animatii;
- }
- friend lista;
- };
- class adulti :public magazin
- {
- private:
- int marime;
- char BsauF[20];
- public:
- adulti(char n[20], int ni,int t, int m, char BF[20]) :magazin(n, ni,t)
- {
- marime = m;
- strcpy(BsauF, BF);
- }
- virtual void afisare()
- {
- magazin::afisare();
- cout << "\nMarime:" << marime;
- cout << "\nBarbati sau Femei:" << BsauF;
- }
- friend lista;
- };
- class lista
- {
- public:
- magazin *head;
- void adaugare(magazin *m);
- void cautare(char nume[20]);
- void stergere(int marime);
- void afisare();
- };
- class dateMagazin
- {
- public:
- char nume_produs[20];
- int nr_inregistrare;
- friend istream & operator >>(istream &in, dateMagazin &magazin);
- friend ostream & operator <<(ostream &out, dateMagazin &magazin);
- };
- istream & operator >>(istream &in, dateMagazin &magazin)
- {
- cout << "\n--------------------------";
- cout << "\nNume Produs:";
- cin >> magazin.nume_produs;
- cout << "\nNr. inregistrare:";
- cin >> magazin.nr_inregistrare;
- return in;
- }
- ostream & operator <<(ostream &out, dateMagazin &magazin)
- {
- cout << "\nDate produs";
- cout << endl;
- return out;
- }
- void lista::adaugare(magazin *m)
- {
- magazin *p;
- p = head;
- if (head == NULL)
- {
- head = m;
- }
- else
- {
- while (p->urm != NULL && strcmp(p->urm->nume_produs,m->nume_produs) < 0)
- {
- p = p->urm;
- }
- m->urm = p->urm;
- p->urm = m;
- }
- }
- void lista::stergere(int marime)
- {
- magazin *p,*aux;
- p = head;
- adulti *a;
- if (p->tip == 2)
- {
- a = (adulti*)p;
- while (a->marime == marime && head!=NULL)
- {
- aux = head;
- head = head->urm;
- delete[] aux;
- a = (adulti*)head;
- }
- }
- p = head;
- while(p->urm!=NULL)
- {
- if (p->urm->tip == 2)
- {
- a = (adulti*)(p->urm);
- }
- else
- {
- a = NULL;
- }
- if (a != NULL && a->marime==marime)
- {
- aux = a;
- p->urm = p->urm->urm;
- delete[] aux;
- }
- p = p->urm;
- if(p==NULL)
- {
- break;
- }
- }
- }
- void lista::afisare()
- {
- magazin *p;
- p = head;
- while (p != NULL)
- {
- p->afisare();
- p = p->urm;
- }
- }
- void lista::cautare(char nume[20])
- {
- magazin *p;
- p = head;
- while (p != NULL)
- {
- if (strcmp(nume, p->nume_produs) == 0)
- {
- p->afisare();
- }
- p = p->urm;
- }
- }
- class exceptionVarsta {};
- void introducere(lista &l, int tip)
- {
- magazin *a;
- dateMagazin d;
- cout << d;
- cin >> d;
- int varsta;
- char animatii[20];
- int marime;
- char BsauF[20];
- if (tip == 1)
- {
- copii *c;
- cout << "\nVarsta:";
- cin >> varsta;
- try
- {
- if (varsta < 0)
- {
- throw exceptionVarsta();
- }
- }
- catch (exceptionVarsta e)
- {
- do
- {
- cout << "\nVarsta pozitiva:";
- cin >> varsta;
- } while (varsta < 0);
- }
- cout << "\nAnimatii:";
- cin >> animatii;
- c = new copii(d.nume_produs, d.nr_inregistrare, tip, varsta, animatii);
- a = c;
- l.adaugare(a);
- }
- else
- {
- adulti *ad;
- cout << "\nMarime:";
- cin >> marime;
- cout << "\nBarbati sau Femei:";
- cin >> BsauF;
- ad = new adulti(d.nume_produs, d.nr_inregistrare, tip, marime, BsauF);
- a = ad;
- l.adaugare(a);
- }
- }
- void main()
- {
- lista l;
- l.head = NULL;
- int op;
- int tip;
- do
- {
- cout << ("\n1.Introducere stoc");
- cout << ("\n2.Afisare");
- cout << ("\n3.Cautare nume");
- cout << ("\n4.Stergere haine la pretul n=");
- cout << ("\nOptiune:");
- cin >> op;
- switch (op)
- {
- case 1:
- {
- cout << ("\n1.Copii");
- cout << ("\n2.Adulti");
- cout << ("\n1/2:");
- cin >> tip;
- introducere(l, tip);
- break;
- }
- case 2:
- {
- l.afisare();
- break;
- }
- case 3:
- {
- l.cautare("abc");
- }
- case 4:
- {
- l.stergere(4);
- }
- }
- } while (op != 9);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement