Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <list>
- #include <iterator>
- #include <conio.h>
- #include <string>
- #include <fstream>
- #define _CRT_SECURE_NO_WARNING
- using namespace std;
- class magazin {
- int tip;
- int pret;
- int inaltime;
- int serie;
- public: magazin() {};
- magazin(int tip, int pret, int inaltime, int serie) {
- this->tip = tip;
- this->pret = pret;
- this->inaltime = inaltime;
- this->serie = serie;
- }
- virtual void afisare() {
- cout << "\n-----------\n";
- cout << "tipul este: " << tip << endl;
- cout << "pret: " << tip << endl;
- cout << "inaltime: " << inaltime << endl;
- cout << "serie: " << serie << endl;
- }
- int get_tip() {
- return tip;
- }
- int get_pret() {
- return pret;
- }
- int get_inaltime() {
- return inaltime;
- }
- int get_serie() {
- return serie;
- }
- friend istream& operator>>(istream& in, magazin*& mgz);
- friend void cautare();
- friend void stergere();
- void set_pret() {
- int pret_nou;
- cout << "Pretul nou este: ";
- cin >> pret_nou;
- pret = pret_nou;
- }
- };
- list<magazin*>mgz;
- list<magazin*> ::iterator it;
- enum material { lemn, bronz };
- class statuete : public magazin {
- material m;
- string autor;
- public: statuete(int tip, int pret, int inaltime, int serie, string autor, material m) : magazin(tip, pret, inaltime, serie) {
- this->m = m;
- this->autor = autor;
- }
- void afisare() {
- magazin::afisare();
- cout << "Materialele statuetelor (0 - lemn, 1 - bronz): " << m << endl;
- cout << "Autorul este: " << autor << endl;
- }
- friend void modificare();
- string get_autor() { return autor; }
- };
- enum tip_arbusti { tufa, copaci };
- class arbusti : public magazin {
- tip_arbusti ta;
- string denumire;
- public: arbusti(int tip, int pret, int inaltime, int serie, string denumire, tip_arbusti ta) : magazin(tip, pret, inaltime, serie) {
- this->denumire = denumire;
- this->ta = ta;
- }
- void afisare() {
- magazin::afisare();
- cout << "Denumirea arbustilor: " << denumire << endl;
- cout << "Tipul arbustilor ( 2- tufa, 3-copaci): " << ta << endl;
- }
- };
- void adaugare_fisier() {
- ifstream f("magazin.txt");
- int tip;
- int pret;
- int inaltime;
- int serie;
- int m;
- string autor;
- int ta;
- string denumire;
- while (f >> tip >> pret >> inaltime >> serie) {
- if (tip == 0) {
- f >> autor >> m;
- switch (m) {
- case 0: mgz.push_back(new statuete(tip, pret, inaltime, serie, autor, material::lemn));
- break;
- case 1: mgz.push_back(new statuete(tip, pret, inaltime, serie, autor, material::bronz));
- break;
- default: break;
- }
- }
- else if (tip == 1) {
- f >> denumire >> ta;
- switch (ta) {
- case 0: mgz.push_back(new arbusti(tip, pret, inaltime, serie, denumire, tip_arbusti::tufa));
- break;
- case 1: mgz.push_back(new arbusti(tip, pret, inaltime, serie, denumire, tip_arbusti::copaci));
- break;
- default: break;
- }
- }
- }
- }
- class Exceptie {
- public: string mesaj;
- Exceptie(string mesaj) {
- this->mesaj = mesaj;
- }
- };
- void adaugare() {
- int tip;
- int pret;
- int inaltime;
- int serie;
- int m;
- string autor;
- int ta;
- string denumire;
- try {
- cout << "Tip 0,1: ";
- if (!(cin >> tip)) {
- throw Exceptie("Eroare citire!!");
- }
- if (tip < 0 || tip > 1) {
- throw Exceptie("Tipul nu exista!");
- }
- }
- catch (Exceptie &e) {
- do {
- cout << e.mesaj << endl;
- cin.clear();
- cin.ignore(numeric_limits <streamsize> ::max(), '\n');
- cout << "Tip 0,1: ";
- if (!(cin >> tip)) {
- e.mesaj = "Eroare citire";
- }
- if (tip < 0 || tip > 1) {
- e.mesaj = "Tipul nu exista";
- }
- else {
- e.mesaj = "Corect";
- }
- } while (e.mesaj != "Corect");
- }
- cout << "Pret: ";
- cin >> pret;
- cout << "Inaltime: ";
- cin >> inaltime;
- cout << "Serie: ";
- cin >> serie;
- if (tip == 0) {
- cout << "Autorul este: ";
- cin >> autor;
- cout << "Materialul este facut din 0-lemn / 1-bronz: ";
- cin >> m;
- switch (m) {
- case 0: mgz.push_back(new statuete(tip, pret, inaltime, serie, autor, material::lemn));
- break;
- case 1: mgz.push_back(new statuete(tip, pret, inaltime, serie, autor, material::bronz));
- break;
- default: break;
- }
- }
- else {
- cout << "Denumirea arborelui este: ";
- cin >> denumire;
- cout << "Tipul arborelui este 0-tufa / 1-copaci: ";
- cin >> ta;
- switch (ta) {
- case 0: mgz.push_back(new arbusti(tip, pret, inaltime, serie, denumire, tip_arbusti::tufa));
- break;
- case 1: mgz.push_back(new arbusti(tip, pret, inaltime, serie, denumire, tip_arbusti::copaci));
- break;
- default: break;
- }
- }
- }
- void afisare() {
- for (it = mgz.begin(); it != mgz.end(); it++) {
- (*it)->afisare();
- cout << "S-a afisat cu succes!! Azi ai noroc!";
- }
- }
- void cautare() {
- int serie_unica;
- int k = 0;
- cout << "introduceti seria unica pe care vreti sa o cautati: ";
- cin >> serie_unica;
- for (it = mgz.begin(); it != mgz.end(); it++) {
- if ((*it)->get_serie() == serie_unica) {
- (*it)->afisare();
- k = 1;
- }
- }
- if (k == 0) {
- cout << "Nu exista seria";
- }
- }
- /* void modificare() {
- string nume_autor;
- int k = 0;
- cout << "Introduceti numele autorului: ";
- cin >> nume_autor;
- for (it = mgz.begin(); it != mgz.end(); it++) {
- if ((*it)->get_tip() == 0) {
- statuete* st = (statuete*)(*it);
- if ((*it)->get_autor() == nume_autor) {
- (*it)->set_pret();
- k = 1;
- }
- }
- }
- if (k == 0) {
- cout << "Nu exista autorul";
- }
- }
- */
- void stergere() {
- int serie_unica;
- int k = 0;
- cout << "introduceti seria unica pe care vreti sa o cautati: ";
- cin >> serie_unica;
- for (it = mgz.begin(); it != mgz.end(); it++) {
- if ((*it)->get_serie() == serie_unica) {
- mgz.erase(it);
- k = 1;
- cout << "Seria a fost stearsa!";
- break;
- }
- }
- if (k == 0) {
- cout << "Nu exista seria \n";
- }
- }
- int main() {
- int opt;
- do {
- cout << "\n 1.Adaugare \n";
- cout << " 2.Adaugare fisier \n";
- cout << " 3.Afisare\n";
- cout << " 4.Cautarea elementelor dupa serie \n";
- cout << " 5.Modificarea pretului unei statuete dupa autor \n";
- cout << " 6.Stergerea elementelor cu serie \n";
- cout << " 0. IESIRE\n";
- cout << "Optiunea dvs este: \n";
- cin >> opt;
- switch (opt) {
- case 0: exit(0);
- break;
- case 1: adaugare();
- break;
- case 2: adaugare_fisier();
- break;
- case 3: afisare();
- break;
- case 4: cautare();
- break;
- case 5: //modificare();
- break;
- case 6: stergere();
- break;
- }
- } while (opt);
- }
Advertisement
Add Comment
Please, Sign In to add comment