Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define _CRT_SECURE_NO_WARNINGS
- #include <iostream>
- #include <fstream>
- #include <conio.h>
- using namespace std;
- class Lista;
- class Electrocasnice
- {
- private:
- int tip;
- char *producator;
- int pret;
- Electrocasnice *urm;
- public:
- Electrocasnice(int t, char *prod, int price)
- {
- tip = t;
- producator = new char[strlen(prod) + 1];
- strcpy(producator, prod);
- pret = price;
- urm = NULL;
- }
- virtual void afisare()
- {
- cout << "\n";
- cout << "*-----------*" << endl;
- cout << "Producator: " << producator << endl;
- cout << "Pret: " << pret << endl;
- }
- friend class Lista;
- };
- class Masina_Spalat :public Electrocasnice
- {
- private:
- int nr_programe;
- public:
- Masina_Spalat(int t, char *prod, int price, int n_programe) :Electrocasnice(t, prod, price)
- {
- nr_programe = n_programe;
- }
- void afisare(void)
- {
- Electrocasnice::afisare();
- cout << "Numar de programe: " << nr_programe << endl;
- }
- friend class Lista;
- };
- class Aragaz :public Electrocasnice
- {
- private:
- char *tip_arzator;
- public:
- Aragaz(int t, char *prod, int price, char *t_arzator) :Electrocasnice(t, prod, price)
- {
- tip_arzator = new char[strlen(t_arzator) + 1];
- strcpy(tip_arzator, t_arzator);
- }
- void afisare(void)
- {
- Electrocasnice::afisare();
- cout << "Tip arzator: " << tip_arzator << endl;
- }
- friend class Lista;
- };
- class Lista
- {
- public:
- Electrocasnice *prim;
- void adaugare(Electrocasnice *nou);
- void introducere(Lista &l, int t);
- void afisare(void);
- void salvare_fisier(void);
- void cautare(void);
- void stergere(void);
- };
- void Lista::introducere(Lista &l, int t)
- {
- Electrocasnice *e;
- char *producator = new char[20];
- int pret;
- int nr_programe;
- char *tip_arzator = new char[20];
- cout << "Introduceti producatorul: " << endl;
- cin >> producator;
- cout << "Introduceti pretul: " << endl;
- cin >> pret;
- if (t == 0)
- {
- cout << "Introduceti numarul de programe: " << endl;
- cin >> nr_programe;
- Masina_Spalat *ms = new Masina_Spalat(0, producator, pret, nr_programe);
- e = ms;
- l.adaugare(e);
- }
- else if (t == 1)
- {
- cout << "Introduceti tipul de arzator: " << endl;
- cin >> tip_arzator;
- Aragaz *a = new Aragaz(1, producator, pret, tip_arzator);
- e = a;
- l.adaugare(e);
- }
- }
- void Lista::adaugare(Electrocasnice *nou)
- {
- Electrocasnice *p;
- p = prim;
- if (!p)
- {
- prim = nou;
- }
- else if (p)
- {
- if ((strcmp(prim ->producator, nou->producator)) > 0)
- {
- nou->urm = prim;
- prim = nou;
- }
- else
- {
- while (p->urm && (strcmp(p->urm->producator, nou->producator) < 0))
- {
- p = p->urm;
- }
- nou->urm = p->urm;
- p->urm = nou;
- }
- }
- }
- void Lista::afisare(void)
- {
- Electrocasnice *p;
- p = prim;
- while (p)
- {
- p->afisare();
- p = p->urm;
- }
- }
- void Lista::cautare(void)
- {
- Electrocasnice *p;
- p = prim;
- char prod[20];
- cout << "Introduceti producatorul de cautat: " << endl;
- cin >> prod;
- while (p->urm && (strcmp(p->producator, prod)) != 0)
- {
- p = p->urm;
- }
- if ((strcmp(p->producator, prod)) == 0)
- {
- p->afisare();
- }
- else
- {
- cout << "Nu exista !" << endl;
- }
- }
- void Lista::salvare_fisier(void)
- {
- Electrocasnice *p;
- p = prim;
- ofstream fis("fisier.txt");
- if (fis.is_open())
- {
- while (p)
- {
- fis << p->producator << endl;
- fis << p->pret << endl;
- fis << endl;
- p = p->urm;
- }
- }
- }
- void Lista::stergere(void)
- {
- Electrocasnice *p;
- Electrocasnice *q;
- p = prim;
- char prod[20];
- cout << "Introduceti producatorul de sters: " << endl;
- cin >> prod;
- while ((strcmp(p->urm->producator, prod)) != 0 && p->urm)
- p = p->urm;
- q = p->urm;
- p->urm = q->urm;
- }
- int main(void)
- {
- Lista l;
- l.prim = NULL;
- int opt;
- do
- {
- cout << "1. Adaugati masina de spalat " << endl;
- cout << "2. Adaugati aragaz " << endl;
- cout << "3. Afisare electrocasnice " << endl;
- cout << "4. Cautare electrocasnice " << endl;
- cout << "5. Salvare electrocasnice in fisier " << endl;
- cout << "6. Stergere electrocasnic dupa producator " << endl;
- cout << "0. Iesire" << endl;
- cout << "Optiunea dumneavoastra este: " << endl;
- cin >> opt;
- switch (opt)
- {
- case 1:
- l.introducere(l, 0);
- break;
- case 2:
- l.introducere(l, 1);
- break;
- case 3:
- l.afisare();
- break;
- case 4:
- l.cautare();
- break;
- case 5:
- l.salvare_fisier();
- break;
- case 6:
- l.stergere();
- break;
- default:
- cout << "Optiune gresita & La revedere " << endl;
- break;
- }
- } while (opt != 0);
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement