Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string.h>
- #include<list>
- #include<iterator>
- using namespace std;
- typedef struct
- {
- int lungime, latime;
- } dimensiune;
- void citire_struct(dimensiune &dim)
- {
- cout << "Lungime: ";
- cin >> dim.lungime;
- cout << "Latime: ";
- cin >> dim.latime;
- }
- void afisare_struct(dimensiune dim)
- {
- cout << "Lungime: " << dim.lungime << endl;
- cout << "Latime: " << dim.latime << endl;
- }
- class electrocasnic
- {
- dimensiune dim;
- int pret;
- public:
- class eroare{};
- electrocasnic()
- {}
- electrocasnic(dimensiune dim, int pret)
- {
- this->dim = dim;
- this->pret=pret;
- }
- virtual void afisare()
- {
- afisare_struct(dim);
- cout << "Pret: " << pret << endl;
- }
- int returnare()
- {
- return this->pret;
- }
- friend istream& operator>>(istream& intrare, electrocasnic& p);
- friend void adaugare(list<electrocasnic*>& lista_el, int nr);
- friend void suma_lista(list<electrocasnic*>lista_el);
- };
- class televizor:public electrocasnic
- {
- string marca;
- int nr;
- public:
- televizor()
- {}
- televizor(dimensiune dim, int pret, string marca,int nr):electrocasnic(dim,pret)
- {
- this->marca = marca;
- this->nr = 1;
- }
- void afisare()
- {
- electrocasnic::afisare();
- cout << "Marca: " << marca << endl;
- }
- int returnare2()
- {
- return electrocasnic::returnare();
- }
- };
- class telefon :public electrocasnic
- {
- int nr, camera;
- string model;
- public:
- telefon(dimensiune dim, int pret, int camera, string model, int nr) :electrocasnic(dim, pret)
- {
- this->camera = camera;
- this->model = model;
- this->nr = 2;
- }
- void afisare()
- {
- electrocasnic::afisare();
- cout << "Model: " << model << endl;
- cout << "Camera: " << camera << endl;
- }
- };
- istream& operator>>(istream& intrare, electrocasnic& p)
- {
- dimensiune dim;
- int pret;
- citire_struct(dim);
- try{
- cout << "Pret: ";
- cin >> pret;
- if (pret < 0)
- throw electrocasnic::eroare();
- }
- catch (electrocasnic::eroare)
- {
- do {
- cout << "Pret mai mic ca zero!" << endl;
- cout << "Pret: ";
- cin >> pret;
- } while (pret < 0);
- }
- p = electrocasnic(dim, pret);
- return intrare;
- }
- void adaugare(list<electrocasnic*>& lista_el,int nr)
- {
- auto co = new electrocasnic();
- electrocasnic p;
- string marca, model;
- int camera;
- dimensiune dim;
- cin >> p;
- if (nr == 1)
- {
- cout << "Marca: ";
- cin >> marca;
- auto a = new televizor(p.dim, p.pret, marca, nr);
- co = a;
- lista_el.push_back(co);
- }
- else
- {
- cout << "Model: ";
- cin >> model;
- cout << "Camera: ";
- cin >> camera;
- auto a = new telefon(p.dim, p.pret, camera, model, nr);
- co = a;
- lista_el.push_back(co);
- }
- lista_el.sort();
- }
- template <typename T>
- T suma(int x, int y)
- {
- int s;
- s = x + y;
- return s;
- }
- void suma_lista(list<electrocasnic*>lista_el)
- {
- auto co = new electrocasnic();
- for (auto i = lista_el.begin(); i != lista_el.end(); i++)
- {
- co = *i;
- auto sumc = suma<int>(co->dim.latime, co->dim.lungime);
- cout << sumc << endl;
- }
- }
- void afisare(list<electrocasnic*>lista_tel)
- {
- for (auto i = lista_tel.begin(); i != lista_tel.end(); i++)
- {
- cout << endl;
- (*i)->afisare();
- //lista_tel.remove(*i);
- }
- }
- void stergere(list<electrocasnic*>& lista_el, int pret_caut)
- {
- for (auto i = lista_el.begin(); i != lista_el.end(); i++)
- {
- if ((*i)->returnare() == pret_caut)
- {
- auto co = (*i);
- i++;
- lista_el.remove(co);
- }
- }
- afisare(lista_el);
- }
- int main()
- {
- list<electrocasnic*>lista_el;
- int opt,pret_caut;
- do {
- cout << "0.Iesire" << endl;
- cout << "1.Adaugare" << endl;
- cout << "2.Afisare" << endl;
- cout << "opt= ";
- cin >> opt;
- switch (opt)
- {
- case 0:
- exit(0);
- break;
- case 1:
- cout << "1.Televizor" << endl;
- cout << "2.Telefon" << endl;
- cout << "opt= ";
- cin >> opt;
- adaugare(lista_el,opt);
- break;
- case 2:
- afisare(lista_el);
- break;
- case 3:
- cout << "Dati pretul cautat: ";
- cin >> pret_caut;
- stergere(lista_el,pret_caut);
- break;
- case 4:
- suma_lista(lista_el);
- break;
- default:
- break;
- }
- } while (1);
- }
Advertisement
Add Comment
Please, Sign In to add comment