Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <stdio.h>
- #include <string>
- #include <list>
- #include <iterator>
- #include <fstream>
- using namespace std;
- class Carte {
- private:
- string titlu;
- string autor;
- string editura;
- double pret;
- public:
- Carte(string titlu, string autor, string editura, double pret) {
- this->autor = autor;
- this->editura = editura;
- this->pret = pret;
- this->titlu = titlu;
- }
- virtual void Afisare() {
- cout << titlu << " " << autor << " " << editura << " " << pret << " ";
- }
- string getTitlu() { return titlu; }
- string getAutor() { return autor; }
- void setTitlu(string titlu) { this->titlu = titlu; }
- };
- class Carte_Bele: public Carte {
- private:
- string tipCarte;
- int anAp;
- public:
- Carte_Bele(string titlu, string autor, string editura, double pret, string tipCarte, int anAp ) : Carte(titlu, autor, editura, pret){
- this->anAp = anAp;
- this->tipCarte = tipCarte;
- }
- void Afisare() {
- Carte::Afisare();
- cout << tipCarte << " " << anAp << endl;
- }
- };
- class Carte_Teh : public Carte {
- private:
- string domeniu;
- string nivel;
- public:
- Carte_Teh(string titlu, string autor, string editura, double pret, string domeniu, string nivel) : Carte(titlu, autor, editura, pret) {
- this->nivel = nivel;
- this->domeniu = domeniu;
- }
- void Afisare() {
- Carte::Afisare();
- cout << domeniu << " " << nivel << endl;
- }
- };
- ostream & operator<<(ostream &out, Carte *&c) {
- c->Afisare();
- return out;
- }
- int main() {
- list<Carte *> listCarti;
- list<Carte *>::iterator it;
- ifstream in("in.txt");
- int opt;
- string titlu;
- string autor;
- string editura;
- double pret;
- string titluNou;
- do {
- cout << "0. Iesire \n";
- cout << "1. Citire tastatura \n";
- cout << "2. Afisare \n";
- cout << "Optiunea aleasa: "; cin >> opt;
- switch (opt)
- {
- case 1:
- cout << "Titlu carte: "; cin >> titlu;
- cout << "Autor carte: "; cin >> autor;
- cout << "editura carte: "; cin >> editura;
- cout << "Pret carte: "; cin >> pret;
- int tipCarte;
- cout << "Tip carte introdus 0 - Carte Tehnica, 1 - Carte beletristika: "; cin >> tipCarte;
- if (tipCarte) {
- string tipCarte;
- int anAp;
- cout << "Tip carte: "; cin >> tipCarte;
- try {
- cout << "An aparitie: "; cin >> anAp;
- if (anAp < -2000 || anAp > 2021) throw "Anul nu a fost intrdus bine\n";
- }
- catch (const char * mesaj) {
- cout << mesaj;
- break;
- }
- listCarti.push_back(new Carte_Bele(titlu, autor, editura, pret, tipCarte, anAp));
- }
- else {
- string domeniu;
- string nivel;
- cout << "Domeniu carte: "; cin >> domeniu;
- cout << "Nivel: "; cin >> nivel;
- listCarti.push_back(new Carte_Teh(titlu, autor, editura, pret, domeniu, nivel));
- }
- break;
- case 2:
- for (it = listCarti.begin(); it != listCarti.end(); it++)
- cout << *it;
- break;
- case 3:
- while (!in.eof()) {
- in >> titlu;
- in >> autor;
- in >> editura;
- in >> pret;
- int tipCarte;
- in >> tipCarte;
- if (tipCarte) {
- string tipCarte;
- int anAp;
- in >> tipCarte;
- in >> anAp;
- listCarti.push_back(new Carte_Bele(titlu, autor, editura, pret, tipCarte, anAp));
- }
- else {
- string domeniu;
- string nivel;
- in >> domeniu;
- in >> nivel;
- listCarti.push_back(new Carte_Teh(titlu, autor, editura, pret, domeniu, nivel));
- }
- }
- break;
- case 4:
- cout << "Titlu carte: "; cin >> titlu;
- for (it = listCarti.begin(); it != listCarti.end(); it++)
- if (titlu == (*it)->getTitlu()) {
- listCarti.remove(*it);
- break;
- }
- break;
- case 5:
- cout << "Titlu carte: "; cin >> titlu;
- cout << "Titlu nou: "; cin >> titluNou;
- for (it = listCarti.begin(); it != listCarti.end(); it++)
- if (titlu == (*it)->getTitlu()) {
- (*it)->setTitlu(titluNou);
- break;
- }
- break;
- case 6:
- cout << "Autor: "; cin >> autor;
- for (it = listCarti.begin(); it != listCarti.end(); it++)
- if (titlu == (*it)->getAutor()) {
- cout << *it;
- }
- break;
- }
- } while (opt != 0);
- return 0;
- }
Add Comment
Please, Sign In to add comment