Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <vector>
- using namespace std;
- class Contact
- {
- string nume, prenume;
- long nr_telefon;
- string adresa_email;
- public:
- Contact()
- {
- nume = prenume = " ";
- nr_telefon = -1;
- adresa_email = " ";
- }
- Contact(string nume, string prenume, long nr_telefon, string adresa_email)
- {
- this->nume = nume;
- this->prenume = prenume;
- this->nr_telefon = nr_telefon;
- this->adresa_email = adresa_email;
- }
- Contact(const Contact& X)
- {
- this->nume = X.nume;
- this->prenume = X.prenume;
- this->nr_telefon = X.nr_telefon;
- this->adresa_email = X.adresa_email;
- }
- Contact operator= (Contact& X)
- {
- this->nume = X.nume;
- this->prenume = X.prenume;
- this->nr_telefon = X.nr_telefon;
- this->adresa_email = X.adresa_email;
- return *this;
- }
- friend ostream& operator<< (ostream&, Contact&);
- };
- ostream& operator<< (ostream& os, Contact& X)
- {
- os << "Nume: " << X.nume << " Prenume: " << X.prenume << endl;
- os << "Nr Telefon: " << X.nr_telefon << endl;
- os << "Email: " << X.adresa_email << endl;
- return os;
- }
- class Data
- {
- int zi, luna, an;
- public:
- Data()
- {
- zi = luna = an = -1;
- }
- Data(int zi, int luna, int an)
- {
- this->zi = zi;
- this->luna = luna;
- this->an = an;
- }
- Data(Data& X)
- {
- this->zi = X.zi;
- this->luna = X.luna;
- this->an = X.an;
- }
- Data operator= (Data& X)
- {
- this->zi = X.zi;
- this->luna = X.luna;
- this->an = X.an;
- return *this;
- }
- bool operator== (Data& X)
- {
- if (this->zi == X.zi && this->luna == X.luna && this->an == X.an)
- return true;
- else
- return false;
- }
- friend ostream& operator<< (ostream&, Data&);
- };
- ostream& operator<< (ostream& os, Data& X)
- {
- os << X.zi << "/" << X.luna << "/" << X.an;
- return os;
- }
- class Ora
- {
- int ora, minute;
- public:
- Ora() { ora = minute = -1; }
- Ora(int ora, int minute)
- {
- this->ora = ora;
- this->minute = minute;
- }
- Ora(Ora& X)
- {
- this->ora = X.ora;
- this->minute = X.minute;
- }
- Ora operator= (Ora& X)
- {
- this->ora = X.ora;
- this->minute = X.minute;
- return *this;
- }
- bool operator== (Ora& X)
- {
- if (this->ora == X.ora && this->minute == X.minute)
- return true;
- else
- return false;
- }
- friend ostream& operator<< (ostream&, Ora&);
- };
- ostream& operator<< (ostream& os, Ora& X)
- {
- os << X.ora << ":" << X.minute;
- return os;
- }
- class Eveniment
- {
- protected:
- Data data;
- Ora ora;
- string descriere;
- public:
- Eveniment()
- {
- Data data_null;
- data = data_null;
- Ora ora_null;
- ora = ora_null;
- descriere = " ";
- }
- Eveniment(Data d, Ora ora, string descriere)
- {
- this->data = d;
- this->ora = ora;
- this->descriere = descriere;
- }
- virtual int durata() = 0;
- virtual bool suprapune() = 0;
- Data getData()
- {
- return data;
- }
- Ora getOra()
- {
- return ora;
- }
- void afis()
- {
- cout << "Data -> " << data << " Ora -> " << ora << " Descriere-> " << descriere << endl;
- }
- };
- class Alarma : public Eveniment
- {
- public:
- Alarma() :Eveniment() {};
- Alarma(Data d, Ora ora, string descriere) :Eveniment(d, ora, descriere) {};
- int durata()
- {
- int ans = 0;
- return ans;
- }
- bool suprapune()
- {
- return true;
- }
- };
- class Activitate :public Eveniment
- {
- Contact contact;
- public:
- Activitate() :Eveniment()
- {
- Contact contact_null;
- contact = contact_null;
- }
- Activitate(Data d, Ora ora, string descriere) :Eveniment(d, ora, descriere)
- {
- Contact contact_null;
- contact = contact_null;
- }
- Activitate(Data d, Ora ora, string descriere, Contact contact) :Eveniment(d, ora, descriere)
- {
- this->contact = contact;
- }
- int durata()
- {
- int ans = 30;
- return ans;
- }
- bool suprapune()
- {
- return false;
- }
- };
- class Sedinta :public Eveniment
- {
- vector<Contact> participanti;
- public:
- Sedinta() :Eveniment() {};
- Sedinta(Data d, Ora ora, string descriere, vector<Contact> contacte) :Eveniment(d, ora, descriere)
- {
- participanti = contacte;
- }
- int durata()
- {
- int ans = 30;
- return ans;
- }
- bool suprapune()
- {
- return false;
- }
- };
- void afiseaza_evenimente(vector<Eveniment*> v, Data d)
- {
- vector<Eveniment*> evenimente_azi;
- for (int i = 0; i < int(v.size()); i++)
- {
- if (v[i]->getData() == d)
- {
- evenimente_azi.push_back(v[i]);
- }
- }
- for (int i = 0; i < int(evenimente_azi.size()); i++)
- evenimente_azi[i]->afis();
- }
- void afiseaza_eveniment_actual(vector<Eveniment*> v, Data d, Ora o)
- {
- bool exista_evenimente = false;
- for (int i = 0; i < int(v.size()); i++)
- {
- if (v[i]->getData() == d && v[i]->getOra() == o)
- {
- v[i]->afis();
- exista_evenimente = true;
- }
- }
- if (exista_evenimente == false)
- cout << "Nu exista evenimente la momentul actual." << endl;
- }
- int main()
- {
- vector<Eveniment*> v;
- Data data1(22, 01, 2020);
- Ora ora1(11, 30);
- Eveniment* ev1 = new Alarma(data1, ora1, "pauza");
- v.push_back(ev1);
- Data data2(22, 01, 2020);
- Ora ora2(12, 00);
- vector<Contact> contacte1;
- Contact c1("Gigel", "Smecheru", 735789456, "gigel@yahoo.ro");
- Contact c2("Bebita", "Judokanu", 723456123, "judokanu@gmail.ro");
- contacte1.push_back(c1);
- contacte1.push_back(c2);
- Eveniment* ev2 = new Sedinta(data2, ora2, "sedinta cu barosanii", contacte1);
- v.push_back(ev2);
- Data data3(21, 01, 2020);
- Ora ora3(15,00);
- Contact secretara("Gratiela", "Panamera", 761693852, "secretara_ta@hotmail.com");
- Eveniment* ev3 = new Activitate(data3, ora3, "cafea cu Gratiela", secretara);
- v.push_back(ev3);
- for (int i = 0; i < int(v.size()); i++)
- v[i]->afis();
- cout << "Evenimentele din data " << data3 << ": " << endl;
- afiseaza_evenimente(v, data3);
- cout << "Evenimentul actual: " << endl;
- afiseaza_eveniment_actual(v, data1, ora2);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement