Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <conio.h>
- #include <string>
- #include <list>
- #include <iterator>
- #include <fstream>
- #include<exception>
- using namespace std;
- class Exception : public exception {
- private:
- string mesajEroare;
- public:
- Exception(string mesajEroare) {
- this->mesajEroare = mesajEroare;
- }
- const char* what() const throw() {
- if (mesajEroare == "lista_goala") return "\nIn lista nu se afla niciun element";
- }
- };
- class Bibloteca {
- protected:
- string titlu;
- static Bibloteca* head;
- Bibloteca* next;
- public:
- Bibloteca(string titlu) {
- this->titlu = titlu;
- this->next = NULL;
- if (head == NULL) {
- head = this;
- return;
- }
- if (head->titlu > this-> titlu) {
- this->next = head;
- head = this;
- return;
- }
- Bibloteca* q = head;
- while (q->next && q->next->titlu < this->titlu) q = q->next;
- this->next = q->next;
- q->next = this;
- }
- virtual void Afisare(int selectCategory){}
- static void AfisarelistaCategori(int selectCategory) {
- Bibloteca *q = head;
- while (q) {
- q->Afisare(selectCategory);
- q = q->next;
- }
- }
- };
- Bibloteca* Bibloteca::head = NULL;
- class Video : public Bibloteca {
- private:
- unsigned durataSecunde;
- public:
- Video(string titlu, unsigned durataSecunde) : Bibloteca(titlu) {
- this->durataSecunde = durataSecunde;
- }
- void Afisare(int selectCategory) {
- if (selectCategory == 1)
- cout << "\n" << titlu << " " << durataSecunde;
- }
- };
- class Audio : public Bibloteca {
- private:
- string bitrate;
- public:
- Audio(string titlu, string bitrate) : Bibloteca(titlu) {
- this->bitrate = bitrate;
- }
- void Afisare(int selectCategory) {
- if (selectCategory == 2)
- cout << "\n" << titlu << " " << bitrate;
- }
- };
- class Imagine : public Bibloteca {
- private:
- string rezolutie;
- public:
- Imagine(string titlu, string rezolutie) : Bibloteca(titlu) {
- this->rezolutie = rezolutie;
- }
- void Afisare(int selectCategory) {
- if (selectCategory == 3)
- cout << "\n" << titlu << " " << rezolutie;
- }
- };
- class Document : public Bibloteca {
- private:
- string tipDocumnet;
- public:
- Document(string titlu, string tipDocumnet) : Bibloteca(titlu) {
- this->tipDocumnet = tipDocumnet;
- }
- void Afisare(int selectCategory) {
- if (selectCategory == 4)
- cout << "\n" << titlu << " " << tipDocumnet;
- }
- };
- ofstream& operator<<(ofstream& iesire, Video* V)
- {
- //Bibloteca::AfisareListaFiser(iesire);
- return iesire;
- }
- ifstream& operator >> (ifstream& intrare, Video* V)
- {
- string titlu;
- unsigned durataSecunde;
- getline(intrare, titlu);
- intrare >> durataSecunde;
- V = new Video(titlu, durataSecunde);
- getline(intrare, titlu);
- return intrare;
- }
- istream& operator >> (istream& intrare, Video* V)
- {
- string titlu;
- unsigned durataSecunde;
- cout << "\nTitlu: ";
- getline(intrare, titlu);
- cout << "Durata in secunde: "; intrare >> durataSecunde;
- V = new Video(titlu, durataSecunde);
- getline(intrare, titlu);
- return intrare;
- }
- ostream& operator<<(ostream& iesire, Audio *A)
- {
- //Bibloteca::AfisareLista();
- return iesire;
- }
- ifstream& operator >> (ifstream& intrare, Audio* A){
- string titlu, bitrate;
- getline(intrare, titlu);
- getline(intrare, bitrate);
- A = new Audio(titlu, bitrate);
- return intrare;
- }
- istream& operator >> (istream& intrare, Audio* A)
- {
- string titlu, bitrate;
- cout << "\nTitlu: ";
- getline(intrare, titlu);
- cout << "Bitrate "; getline(intrare, bitrate);
- A = new Audio(titlu, bitrate);
- return intrare;
- }
- ifstream& operator >> (ifstream& intrare, Imagine* I) {
- string titlu, rezulutie;
- getline(intrare, titlu);
- getline(intrare, rezulutie);
- I = new Imagine(titlu, rezulutie);
- return intrare;
- }
- istream& operator >> (istream& intrare, Imagine* I)
- {
- string titlu, rezultie;
- cout << "\nTitlu: ";
- getline(intrare, titlu);
- cout << "Rezulutie "; getline(intrare, rezultie);
- I = new Imagine(titlu, rezultie);
- return intrare;
- }
- ifstream& operator >> (ifstream& intrare, Document* D) {
- string titlu, tipDocumnet;
- getline(intrare, titlu);
- getline(intrare, tipDocumnet);
- D = new Document(titlu, tipDocumnet);
- return intrare;
- }
- istream& operator >> (istream& intrare, Document* D)
- {
- string titlu, tipDocumnet;
- cout << "\nTitlu: ";
- getline(intrare, titlu);
- cout << "Tip de Documnet "; getline(intrare, tipDocumnet);
- D = new Document(titlu, tipDocumnet);
- return intrare;
- }
- int main() {
- ifstream video("video.txt");
- ifstream audio("audio.txt");
- ifstream imagine("imagine.txt");
- ifstream document("document.txt");
- Video *v = NULL;
- Audio *a = NULL;
- Imagine *i = NULL;
- Document *d = NULL;
- char c;
- int opt;
- do {
- cout << "\n 1.Citire din fiser. ";
- cout << "\n 2.Afisare tabelara pe categorie. ";
- cout << "\n 3.Adugare de la tastatura";
- cout << "\n 0.Iesire";
- cout << "\n Optiunea aleasa: "; cin >> opt;
- getchar();
- system("cls");
- switch (opt)
- {
- case 0: return 0;
- case 1:
- while (!video.eof()) video >> v;
- while (!audio.eof()) audio >> a;
- while (!imagine.eof()) imagine >> i;
- while (!document.eof()) document >> d;
- break;
- case 2:
- cout << "\nVideo: ";
- Bibloteca::AfisarelistaCategori(1);
- cout << "\nAudio: ";
- Bibloteca::AfisarelistaCategori(2);
- cout << "\nImagine: ";
- Bibloteca::AfisarelistaCategori(3);
- cout << "\nDocumnet: ";
- Bibloteca::AfisarelistaCategori(4);
- case 3:
- cout << "\n Tip de aparat media: (v- video, a-audio, i-imagine, d-documnet)"; cin >> c;
- if(c =='v')cin >> v;
- else if (c == 'a')cin >> a;
- else if (c == 'i')cin >> i;
- else if (c == 'd')cin >> d;
- break;
- default:
- break;
- }
- } while (1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment