Alx09

Untitled

Jan 5th, 2021
1,066
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.64 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. #include <string>
  4. #include <list>
  5. #include <iterator>
  6. #include <fstream>
  7. #include<exception>
  8. using namespace std;
  9.  
  10. class Exception : public exception {
  11. private:
  12.     string mesajEroare;
  13. public:
  14.  
  15.     Exception(string mesajEroare) {
  16.        
  17.         this->mesajEroare = mesajEroare;
  18.     }
  19.     const char* what() const throw() {
  20.         if (mesajEroare == "lista_goala") return "\nIn lista nu se afla niciun element";
  21.     }
  22. };
  23.  
  24. class Bibloteca {
  25. protected:
  26.     string titlu;
  27.     static Bibloteca* head;
  28.     Bibloteca* next;
  29. public:
  30.     Bibloteca(string titlu) {
  31.         this->titlu = titlu;
  32.         this->next = NULL;
  33.         if (head == NULL) {
  34.             head = this;
  35.             return;
  36.         }
  37.         if (head->titlu > this-> titlu) {
  38.             this->next = head;
  39.             head = this;
  40.             return;
  41.         }
  42.         Bibloteca* q = head;
  43.         while (q->next && q->next->titlu < this->titlu) q = q->next;
  44.         this->next = q->next;
  45.         q->next = this;
  46.     }
  47.     virtual void Afisare(int selectCategory){}
  48.     static void AfisarelistaCategori(int selectCategory) {
  49.         Bibloteca *q = head;
  50.         while (q) {
  51.             q->Afisare(selectCategory);
  52.             q = q->next;
  53.         }
  54.     }
  55. };
  56. Bibloteca* Bibloteca::head = NULL;
  57.  
  58. class Video : public Bibloteca {
  59. private:
  60.     unsigned durataSecunde;
  61. public:
  62.     Video(string titlu, unsigned durataSecunde) : Bibloteca(titlu) {
  63.         this->durataSecunde = durataSecunde;
  64.     }
  65.     void Afisare(int selectCategory) {
  66.         if (selectCategory == 1)
  67.             cout << "\n" << titlu << " " << durataSecunde;
  68.     }
  69. };
  70.  
  71. class Audio : public Bibloteca {
  72. private:
  73.     string bitrate;
  74. public:
  75.     Audio(string titlu, string bitrate) : Bibloteca(titlu) {
  76.         this->bitrate = bitrate;
  77.     }
  78.     void Afisare(int selectCategory) {
  79.         if (selectCategory == 2)
  80.             cout << "\n" << titlu << " " << bitrate;
  81.     }
  82. };
  83.  
  84. class Imagine : public Bibloteca {
  85. private:
  86.     string rezolutie;
  87. public:
  88.     Imagine(string titlu, string rezolutie) : Bibloteca(titlu) {
  89.         this->rezolutie = rezolutie;
  90.     }
  91.     void Afisare(int selectCategory) {
  92.         if (selectCategory == 3)
  93.             cout << "\n" << titlu << " " << rezolutie;
  94.     }
  95. };
  96. class Document : public Bibloteca {
  97. private:
  98.     string tipDocumnet;
  99. public:
  100.     Document(string titlu, string tipDocumnet) : Bibloteca(titlu) {
  101.         this->tipDocumnet = tipDocumnet;
  102.     }
  103.     void Afisare(int selectCategory) {
  104.         if (selectCategory == 4)
  105.             cout << "\n" << titlu << " " << tipDocumnet;
  106.     }
  107. };
  108.  
  109.  
  110.  
  111.  
  112. ofstream& operator<<(ofstream& iesire, Video* V)
  113. {
  114.     //Bibloteca::AfisareListaFiser(iesire);
  115.     return iesire;
  116. }
  117. ifstream& operator >> (ifstream& intrare, Video* V)
  118. {
  119.    
  120.  
  121.     string  titlu;
  122.     unsigned durataSecunde;
  123.     getline(intrare, titlu);
  124.     intrare >> durataSecunde;
  125.     V = new Video(titlu, durataSecunde);
  126.     getline(intrare, titlu);
  127.  
  128.     return intrare;
  129. }
  130. istream& operator >> (istream& intrare, Video* V)
  131. {
  132.  
  133.    
  134.     string  titlu;
  135.     unsigned durataSecunde;
  136.     cout << "\nTitlu: ";
  137.     getline(intrare, titlu);
  138.     cout << "Durata in secunde: "; intrare >> durataSecunde;
  139.     V = new Video(titlu, durataSecunde);
  140.     getline(intrare, titlu);
  141.  
  142.     return intrare;
  143. }
  144.  
  145. ostream& operator<<(ostream& iesire, Audio *A)
  146. {
  147.     //Bibloteca::AfisareLista();
  148.     return iesire;
  149. }
  150. ifstream& operator >> (ifstream& intrare, Audio* A){
  151.   string  titlu, bitrate;
  152.     getline(intrare, titlu);
  153.     getline(intrare, bitrate);
  154.     A = new Audio(titlu, bitrate);
  155.     return intrare;
  156. }
  157. istream& operator >> (istream& intrare, Audio* A)
  158. {
  159.  
  160.  
  161.     string  titlu, bitrate;
  162.    
  163.     cout << "\nTitlu: ";
  164.     getline(intrare, titlu);
  165.     cout << "Bitrate ";  getline(intrare, bitrate);
  166.     A = new Audio(titlu, bitrate);
  167.    
  168.  
  169.     return intrare;
  170. }
  171.  
  172. ifstream& operator >> (ifstream& intrare, Imagine* I) {
  173.     string  titlu, rezulutie;
  174.     getline(intrare, titlu);
  175.     getline(intrare, rezulutie);
  176.     I = new Imagine(titlu, rezulutie);
  177.     return intrare;
  178. }
  179. istream& operator >> (istream& intrare, Imagine* I)
  180. {
  181.  
  182.     string  titlu, rezultie;
  183.     cout << "\nTitlu: ";
  184.     getline(intrare, titlu);
  185.     cout << "Rezulutie ";  getline(intrare, rezultie);
  186.     I = new Imagine(titlu, rezultie);
  187.  
  188.     return intrare;
  189. }
  190.  
  191. ifstream& operator >> (ifstream& intrare, Document* D) {
  192.     string  titlu, tipDocumnet;
  193.     getline(intrare, titlu);
  194.     getline(intrare, tipDocumnet);
  195.     D = new Document(titlu, tipDocumnet);
  196.     return intrare;
  197. }
  198. istream& operator >> (istream& intrare, Document* D)
  199. {
  200.  
  201.     string  titlu, tipDocumnet;
  202.     cout << "\nTitlu: ";
  203.     getline(intrare, titlu);
  204.     cout << "Tip  de Documnet ";  getline(intrare, tipDocumnet);
  205.     D = new Document(titlu, tipDocumnet);
  206.  
  207.     return intrare;
  208. }
  209.  
  210. int main() {
  211.     ifstream video("video.txt");
  212.     ifstream audio("audio.txt");
  213.     ifstream imagine("imagine.txt");
  214.     ifstream document("document.txt");
  215.     Video *v = NULL;
  216.     Audio *a = NULL;
  217.     Imagine *i = NULL;
  218.     Document *d = NULL;
  219.     char c;
  220.     int opt;
  221.     do {
  222.  
  223.         cout << "\n 1.Citire din fiser. ";
  224.         cout << "\n 2.Afisare tabelara pe categorie. ";
  225.         cout << "\n 3.Adugare de la tastatura";
  226.         cout << "\n 0.Iesire";
  227.         cout << "\n Optiunea aleasa: "; cin >> opt;
  228.         getchar();
  229.         system("cls");
  230.         switch (opt)
  231.         {
  232.         case 0: return 0;
  233.         case 1:
  234.             while (!video.eof()) video >> v;
  235.             while (!audio.eof()) audio >> a;
  236.             while (!imagine.eof()) imagine >> i;
  237.             while (!document.eof()) document >> d;
  238.             break;
  239.         case 2:
  240.             cout << "\nVideo: ";
  241.             Bibloteca::AfisarelistaCategori(1);
  242.             cout << "\nAudio: ";
  243.             Bibloteca::AfisarelistaCategori(2);
  244.             cout << "\nImagine: ";
  245.             Bibloteca::AfisarelistaCategori(3);
  246.             cout << "\nDocumnet: ";
  247.             Bibloteca::AfisarelistaCategori(4);
  248.         case 3:
  249.             cout << "\n Tip de aparat media: (v- video, a-audio, i-imagine, d-documnet)"; cin >> c;
  250.             if(c =='v')cin >> v;
  251.             else if (c == 'a')cin >> a;
  252.             else if (c == 'i')cin >> i;
  253.             else if (c == 'd')cin >> d;
  254.             break;
  255.         default:
  256.             break;
  257.         }
  258.     } while (1);
  259.     return 0;
  260. }
Advertisement
Add Comment
Please, Sign In to add comment