Advertisement
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 Articol {
- private:
- int tip;
- string denumire;
- double pret, cantitate;
- public:
- Articol(int tip, string denumire, double pret, double cantitate) {
- this->tip = tip;
- this->denumire = denumire;
- this->pret = pret;
- this->cantitate = cantitate;
- }
- virtual void Afis() {
- cout << denumire<<" "<< pret <<" "<<cantitate<<" " ;
- }
- };
- class Perisabil: public Articol{
- private:
- string dataExp, categ;
- public:
- Perisabil(int tip, string denumire, double pret, double cantitate, string dataExp, string categ) : Articol(0, denumire, pret, cantitate) {
- this->dataExp = dataExp;
- this->categ = categ;
- }
- void Afis() {
- Articol::Afis();
- cout << dataExp << " " << categ<<endl;
- }
- };
- class NePerisabil : public Articol {
- private:
- string domeniu, material;
- public:
- NePerisabil(int tip, string denumire, double pret, double cantitate, string domeniu, string material) : Articol(1, denumire, pret, cantitate) {
- this->domeniu= domeniu;
- this->material = material;
- }
- void Afis() {
- Articol::Afis();
- cout << domeniu << " " << material << endl;
- }
- };
- istream &operator>>(istream &in, Articol *& a) {
- int tip;
- string denumire;
- double pret, cantitate;
- string dataExp, categ;
- string domeniu, material;
- cout << "Denumire: "; in >> denumire;
- cout << "Pret: "; in >> pret;
- cout << "Cantitate: "; in >> cantitate;
- cout << "Tip(0-Perisabil, 1-Neperisabil) "; in >> tip;
- if (tip == 0) {
- cout << "Data expirari: "; in >> dataExp;
- cout << "Categorie: "; in >> categ;
- a = new Perisabil(0, denumire, pret, cantitate, dataExp, categ);
- }
- else
- {
- cout << "Domeniu: "; in >> domeniu;
- cout << "Material: "; in >> material;
- a = new NePerisabil(1, denumire, pret, cantitate, domeniu, material);
- }
- return in;
- }
- ifstream &operator>>(ifstream &in, Articol *& a) {
- int tip;
- string denumire;
- double pret, cantitate;
- string dataExp, categ;
- string domeniu, material;
- in >> denumire;
- in >> pret;
- in >> cantitate;
- in >> tip;
- if (tip == 0) {
- in >> dataExp;
- in >> categ;
- a = new Perisabil(0, denumire, pret, cantitate, dataExp, categ);
- }
- else
- {
- in >> domeniu;
- in >> material;
- a = new NePerisabil(1, denumire, pret, cantitate, domeniu, material);
- }
- return in;
- }
- int main() {
- list<Articol *> lista;
- list<Articol *>::iterator it;
- int opt;
- Articol *a = NULL;
- ifstream f("in.txt");
- do {
- cout << "0. Iesire\n";
- cout << "1. Citire Tast\n";
- cout << "2. Afisare\n";
- cout << "3. Citire Fiser\n";
- cout << "Optiunea aleasa: "; cin >> opt;
- switch (opt)
- {
- case 0: exit(0);
- case 1:
- cin >> a;
- lista.push_back(a);
- break;
- case 2:
- for (it = lista.begin(); it != lista.end(); it++)(*it)->Afis();
- break;
- case 3:
- while (!f.eof())
- {
- f >> a;
- lista.push_back(a);
- }
- lista.erase(--lista.end() ); // stergem ulitmul elment din lista deoarece este vid
- break;
- default:
- break;
- }
- } while (1);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement