Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- using namespace std;
- class Pozitie {
- public:
- int zi;
- int ora;
- char explicatie[30];
- public:
- virtual void display() {
- cout << "zi: " << zi << " ora: " << ora << " explicatie: " << explicatie << endl;
- }
- friend ostream& operator << (ostream& os, Pozitie& p);
- virtual bool operator&(Pozitie& p) = 0;
- bool operator==(Pozitie& p) {
- if (this->zi == p.zi && this->ora == p.ora && this->explicatie == p.explicatie)
- return true;
- else
- return false;
- }
- bool operator<(Pozitie& p) {
- bool op;
- if (this->zi < p.zi && this->ora < p.ora)
- op = true;
- else
- op = false;
- return op;
- }
- };
- ostream& operator << (ostream& os, Pozitie& p) {
- p.display();
- return os;
- }
- class ApelTelefonic : public Pozitie {
- protected:
- char tel[12];
- public:
- ApelTelefonic(int zi, int ora, char* explicatie, char* tel) {
- this->zi = zi;
- this->ora = ora;
- strcpy(this->explicatie, explicatie);
- strcpy(this->tel, tel);
- }
- void display() {
- cout << "zi: " << zi << " ora: " << ora << " explicatie: " << explicatie << " tel: "<< tel << endl;
- }
- friend ostream& operator << (ostream& os, ApelTelefonic& a);
- bool operator&(Pozitie& p) {
- ApelTelefonic& apel = dynamic_cast<ApelTelefonic&>(p);
- if (this->zi == apel.zi && this->ora == apel.ora && strcmp(this->tel, apel.tel) == 0)
- return true;
- else
- return false;
- }
- };
- ostream& operator << (ostream& os, ApelTelefonic& a) {
- a.display();
- return os;
- }
- class Sedinta : public Pozitie {
- protected:
- char* tema;
- int durata;
- public:
- Sedinta(int zi, int ora, char* explicatie, char* tema, int durata) {
- this->zi = zi;
- this->ora = ora;
- strcpy(this->explicatie, explicatie);
- this->tema = new char[strlen(tema) + 1];
- strcpy(this->tema, tema);
- this->durata = durata;
- }
- ~Sedinta() {
- delete[] tema;
- }
- void display() {
- cout << "zi: " << zi << " ora: " << ora << " explicatie: " << explicatie << " tema: " << tema << endl;
- }
- friend ostream& operator << (ostream& os, Sedinta& s);
- bool operator&(Pozitie& p) {
- Sedinta& s = dynamic_cast<Sedinta &>(p);
- if (this->ora == s.ora && this->durata == s.durata)
- return true;
- else
- return false;
- }
- };
- ostream& operator << (ostream& os, Sedinta& s) {
- s.display();
- return os;
- }
- class Agenda {
- public:
- Pozitie* pozitii[100];
- int dim;
- Agenda() {
- dim = 0;
- pozitii[0] = NULL;
- }
- ~Agenda() {
- }
- Agenda& operator+=(ApelTelefonic& apel) {
- /*for (int i = 0; i < dim; i++) {
- ApelTelefonic& a = dynamic_cast<ApelTelefonic&>(pozitii[i]);
- if(!(a & apel)
- }*/
- pozitii[dim] = (Pozitie*)&apel;
- for (int i = 0; i < dim; i++)
- for (int j = i + 1; j < dim; j++) {
- if (pozitii[j] < pozitii[i]) {
- Pozitie* aux;
- aux = pozitii[dim];
- pozitii[dim] = pozitii[i];
- pozitii[i] = aux;
- }
- }
- dim++;
- return *this;
- }
- Agenda& operator+=(Sedinta& sed) {
- pozitii[dim] = (Pozitie*)&sed;
- for (int i = 0; i < dim; i++)
- for (int j = i + 1; j < dim; j++) {
- if (pozitii[j] < pozitii[i]) {
- Pozitie* aux;
- aux = pozitii[dim];
- pozitii[dim] = pozitii[i];
- pozitii[i] = aux;
- }
- }
- dim++;
- return *this;
- }
- Agenda& operator-=(ApelTelefonic& apel) {
- for (int i = 0; i < dim; i++) {
- if (this->pozitii[i] == (Pozitie*)&apel) {
- this->pozitii[i] = 0;
- for (int j = i; j < dim; j++) {
- this->pozitii[j] = this->pozitii[j + 1];
- }
- dim--;
- }
- }
- return *this;
- }
- Agenda& operator-=(Sedinta& sed) {
- for (int i = 0; i < dim; i++) {
- if (this->pozitii[i] == (Pozitie*)&sed) {
- this->pozitii[i] = 0;
- for (int j = i; j < dim; j++) {
- this->pozitii[j] = this->pozitii[j + 1];
- }
- dim--;
- }
- }
- return *this;
- }
- };
- void main() {
- Agenda a2014;
- ApelTelefonic a1(121, 12, "telefon lui Ionescu P", "0722123321");
- ApelTelefonic a2(25, 11, "suna pe Popescu I", "0722123456");
- ApelTelefonic a3(11, 12, "telefon lui Ionescu P", "0722123321");
- Sedinta s1(31, 10, "Adunare generala sindicat", " Incheierea contractelor de munca", 2);
- a2014 += a1;
- a2014 += a2;
- a2014 += a3;
- a2014 += s1;
- a2014 -= a1;
- bool y = (a1 & a3);
- cout << y << endl; // daca e 1 se suprapun, daca e 0, nu
- cout << a1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement