Alx09

Subiect 5.5 poo

Nov 23rd, 2021
707
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.00 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.  
  55. int main() {
  56.     list<Carte *> listCarti;
  57.     list<Carte *>::iterator it;
  58.     int opt;
  59.     string titlu;
  60.     string autor;
  61.     string editura;
  62.     double pret;
  63.     do {
  64.         cout << "0. Iesire \n";
  65.         cout << "1. Citire tastatura \n";
  66.         cout << "2. Afisare \n";
  67.         cout << "Optiunea aleasa: "; cin >> opt;
  68.         switch (opt)
  69.         {
  70.         case 1:
  71.             cout << "Titlu carte: "; cin >> titlu;
  72.             cout << "Autor carte: "; cin >> autor;
  73.             cout << "editura carte: "; cin >> editura;
  74.             cout << "Pret carte: "; cin >> pret;
  75.             int tipCarte;
  76.             cout << "Tip carte introdus 0 - Carte Tehnica, 1 - Carte beletristika: "; cin >> tipCarte;
  77.             if (tipCarte) {
  78.                 string tipCarte;
  79.                 int anAp;
  80.                 cout << "Tip carte: "; cin >> tipCarte;
  81.                 cout << "An aparitie: "; cin >> anAp;
  82.                 listCarti.push_back(new Carte_Bele(titlu, autor, editura, pret, tipCarte, anAp));
  83.            }
  84.             else {
  85.                 string domeniu;
  86.                 string nivel;
  87.                 cout << "Domeniu carte: "; cin >> domeniu;
  88.                 cout << "Nivel: "; cin >> nivel;
  89.                 listCarti.push_back(new Carte_Teh(titlu, autor, editura, pret, domeniu, nivel));
  90.             }
  91.             break;
  92.         case 2:
  93.             for (it = listCarti.begin(); it != listCarti.end(); it++)
  94.                 (*it)->Afisare();
  95.             break;
  96.         case 3:
  97.             ifstream in("in.txt");
  98.             while (!in.eof()) {
  99.                 in >> titlu;
  100.                 in >> autor;
  101.                 in >> editura;
  102.                 in >> pret;
  103.                 int tipCarte;
  104.                 in >> tipCarte;
  105.                 if (tipCarte) {
  106.                     string tipCarte;
  107.                     int anAp;
  108.                     in >> tipCarte;
  109.                     in >> anAp;
  110.                     listCarti.push_back(new Carte_Bele(titlu, autor, editura, pret, tipCarte, anAp));
  111.                 }
  112.                 else {
  113.                     string domeniu;
  114.                     string nivel;
  115.                     in >> domeniu;
  116.                     in >> nivel;
  117.                     listCarti.push_back(new Carte_Teh(titlu, autor, editura, pret, domeniu, nivel));
  118.                 }
  119.             }
  120.         }
  121.     } while (opt != 0);
  122.     return 0;
  123. }
  124.  
  125.  
Advertisement
Add Comment
Please, Sign In to add comment