Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<stdio.h>
- #include<stdlib.h>
- #include<list>
- #include<iterator>
- #include<string>
- #define _CRT_SECURE_NO_WARNING
- using namespace std;
- class Cadou {
- private:
- static Cadou *head;
- Cadou *next;
- string nume;
- double pret;
- public:
- Cadou(string nume, double pret) {
- this->nume = nume;
- this->pret = pret;
- this->next = NULL;
- if (head == NULL) {
- head = this;
- return;
- }
- if (head->nume > this->nume) {
- this->next = head;
- head = this;
- return;
- }
- Cadou *q = head;
- while (q->next && q->next->nume < this->nume) q = q->next;
- this->next = q->next;
- q->next = this;
- }
- virtual void afisare() {
- cout << nume << " " << pret << " ";
- }
- static void ShowList() { // afisarea pentru implementare cu pointeri
- Cadou *q = head;
- while (q) {
- q->afisare();
- q = q->next;
- }
- }
- string get_nume() { return nume; }
- double get_pret() { return pret; }
- };
- Cadou * Cadou::head = NULL;
- class Bijuteri :public Cadou {
- private:
- string carate;
- public:
- Bijuteri(string nume, double pret, string carate) : Cadou(nume, pret) {
- this->carate = carate;
- }
- void afisare() {
- Cadou::afisare();
- cout << carate << endl;
- }
- };
- class Jucarie : public Cadou
- {
- protected:
- string brand;
- public:
- Jucarie(string nume, double pret, string brand) : Cadou(nume, pret) {
- this->brand = brand;
- }
- void afisare() {
- Cadou::afisare();
- cout << brand << endl;
- }
- };
- list <Cadou *> listaCadou;
- list <Cadou *>::iterator it;
- void showSTL() {
- cout << "------------------------" << endl;
- for (it = listaCadou.begin(); it != listaCadou.end(); it++)
- (*it)->afisare();
- }
- istream &operator>>(istream &in, Bijuteri *b) {
- double pret;
- string nume, carate;
- cout << "Nume: "; in >> nume;
- cout << "Pret: "; in >> pret;
- cout << "Carate: "; in >> carate;
- if (listaCadou.empty())
- listaCadou.push_back(new Bijuteri(nume, pret, carate));
- else {
- it = listaCadou.begin();
- while (it != listaCadou.end() && (*it)->get_nume() < nume)
- advance(it, 1);
- listaCadou.emplace(it, new Bijuteri(nume, pret, carate));
- }
- return in;
- }
- istream &operator>>(istream &in, Jucarie *j) {
- double pret;
- string nume, brand;
- cout << "Nume: "; in >> nume;
- cout << "Pret: "; in >> pret;
- cout << "Brand: "; in >> brand;
- if (listaCadou.empty())
- listaCadou.push_back(new Bijuteri(nume, pret, brand));
- else {
- it = listaCadou.begin();
- while (it != listaCadou.end() && (*it)->get_nume() < nume)
- advance(it, 1);
- listaCadou.emplace(it, new Bijuteri(nume, pret, brand));
- }
- return in;
- }
- int main() {
- Bijuteri *bijuterie = NULL;
- Jucarie *jucarie = NULL;
- bool help;
- int opt;
- do {
- cout << "\n\n";
- cout << "1.Adaugare Cadou\n";
- cout << "2.Afis cadouri \n";
- cout << "0.Iesire \n";
- cout << "Dati optiunea dvs: ";
- cin >> opt;
- system("cls");
- switch (opt) {
- case 1:
- cout << "Este jucarie - 1 sau Bijuterie-0 : "; cin >> help;
- if (help) cin >> jucarie;
- else cin >> bijuterie;
- break;
- case 2:
- showSTL();
- break;
- case 0:
- break;
- }
- } while (opt != 0);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement