Advertisement
Alx09

Sub 6

Nov 23rd, 2021
956
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.07 KB | None | 0 0
  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string>
  4. #include <list>
  5. #include <iterator>
  6. #include <fstream>
  7. using namespace std;
  8. class Carte {
  9. private:
  10.     string titlu;
  11.     string autor;
  12.     string editura;
  13.     double pret;
  14. public:
  15.     Carte(string titlu, string autor, string editura, double pret) {
  16.         this->autor = autor;
  17.         this->editura = editura;
  18.         this->pret = pret;
  19.         this->titlu = titlu;
  20.     }
  21.     virtual void  Afisare() {
  22.         cout << titlu << " " << autor << " " << editura << " " << pret << " ";
  23.     }
  24. };
  25. class Carte_Bele: public Carte {
  26. private:
  27.     string tipCarte;
  28.     int anAp;
  29. public:
  30.     Carte_Bele(string titlu, string autor, string editura, double pret, string tipCarte, int anAp ) : Carte(titlu, autor, editura, pret){
  31.         this->anAp = anAp;
  32.         this->tipCarte = tipCarte;
  33.     }
  34.     void Afisare() {
  35.         Carte::Afisare();
  36.         cout << tipCarte << " " << anAp << endl;
  37.     }
  38. };
  39.  
  40. class Carte_Teh : public Carte {
  41. private:
  42.     string domeniu;
  43.     string nivel;
  44. public:
  45.     Carte_Teh(string titlu, string autor, string editura, double pret, string domeniu, string nivel) : Carte(titlu, autor, editura, pret) {
  46.         this->nivel = nivel;
  47.         this->domeniu = domeniu;
  48.     }
  49.     void Afisare() {
  50.         Carte::Afisare();
  51.         cout << domeniu << " " << nivel << endl;
  52.     }
  53. };
  54. ostream & operator<<(ostream &out, Carte *&c) {
  55.     c->Afisare();
  56.     return out;
  57. }
  58. int main() {
  59.     list<Carte *> listCarti;
  60.     list<Carte *>::iterator it;
  61.     int opt;
  62.     string titlu;
  63.     string autor;
  64.     string editura;
  65.     double pret;
  66.     do {
  67.         cout << "0. Iesire \n";
  68.         cout << "1. Citire tastatura \n";
  69.         cout << "2. Afisare \n";
  70.         cout << "Optiunea aleasa: "; cin >> opt;
  71.         switch (opt)
  72.         {
  73.         case 1:
  74.             cout << "Titlu carte: "; cin >> titlu;
  75.             cout << "Autor carte: "; cin >> autor;
  76.             cout << "editura carte: "; cin >> editura;
  77.             cout << "Pret carte: "; cin >> pret;
  78.             int tipCarte;
  79.             cout << "Tip carte introdus 0 - Carte Tehnica, 1 - Carte beletristika: "; cin >> tipCarte;
  80.             if (tipCarte) {
  81.                 string tipCarte;
  82.                 int anAp;
  83.                 cout << "Tip carte: "; cin >> tipCarte;
  84.                 cout << "An aparitie: "; cin >> anAp;
  85.                 listCarti.push_back(new Carte_Bele(titlu, autor, editura, pret, tipCarte, anAp));
  86.            }
  87.             else {
  88.                 string domeniu;
  89.                 string nivel;
  90.                 cout << "Domeniu carte: "; cin >> domeniu;
  91.                 cout << "Nivel: "; cin >> nivel;
  92.                 listCarti.push_back(new Carte_Teh(titlu, autor, editura, pret, domeniu, nivel));
  93.             }
  94.             break;
  95.         case 2:
  96.             for (it = listCarti.begin(); it != listCarti.end(); it++)
  97.                 cout << *it;
  98.             break;
  99.         case 3:
  100.             ifstream in("in.txt");
  101.             while (!in.eof()) {
  102.                 in >> titlu;
  103.                 in >> autor;
  104.                 in >> editura;
  105.                 in >> pret;
  106.                 int tipCarte;
  107.                 in >> tipCarte;
  108.                 if (tipCarte) {
  109.                     string tipCarte;
  110.                     int anAp;
  111.                     in >> tipCarte;
  112.                     in >> anAp;
  113.                     listCarti.push_back(new Carte_Bele(titlu, autor, editura, pret, tipCarte, anAp));
  114.                 }
  115.                 else {
  116.                     string domeniu;
  117.                     string nivel;
  118.                     in >> domeniu;
  119.                     in >> nivel;
  120.                     listCarti.push_back(new Carte_Teh(titlu, autor, editura, pret, domeniu, nivel));
  121.                 }
  122.             }
  123.         }
  124.     } while (opt != 0);
  125.     return 0;
  126. }
  127.  
  128.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement