Advertisement
unnn

Agenda_POO

Jan 28th, 2017
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.31 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. using namespace std;
  4.  
  5. class Pozitie {
  6. public:
  7.     int zi;
  8.     int ora;
  9.     char explicatie[30];
  10. public:
  11.     virtual void display() {
  12.         cout << "zi: " << zi << " ora: " << ora << " explicatie: " << explicatie << endl;
  13.     }
  14.  
  15.     friend ostream& operator << (ostream& os, Pozitie& p);
  16.  
  17.     virtual bool operator&(Pozitie& p) = 0;
  18.  
  19.     bool operator==(Pozitie& p) {
  20.         if (this->zi == p.zi && this->ora == p.ora && this->explicatie == p.explicatie)
  21.             return true;
  22.         else
  23.             return false;
  24.     }
  25.  
  26.     bool operator<(Pozitie& p) {
  27.         bool op;
  28.         if (this->zi < p.zi && this->ora < p.ora)
  29.             op = true;
  30.         else
  31.             op = false;
  32.         return op;
  33.     }
  34. };
  35.  
  36. ostream& operator << (ostream& os, Pozitie& p) {
  37.     p.display();
  38.  
  39.     return os;
  40. }
  41.  
  42. class ApelTelefonic : public Pozitie {
  43. protected:
  44.     char tel[12];
  45.  
  46. public:
  47.     ApelTelefonic(int zi, int ora, char* explicatie, char* tel) {
  48.         this->zi = zi;
  49.         this->ora = ora;
  50.         strcpy(this->explicatie, explicatie);
  51.         strcpy(this->tel, tel);
  52.     }
  53.  
  54.     void display() {
  55.         cout << "zi: " << zi << " ora: " << ora << " explicatie: " << explicatie << " tel: "<< tel << endl;
  56.     }
  57.  
  58.     friend ostream& operator << (ostream& os, ApelTelefonic& a);
  59.  
  60.     bool operator&(Pozitie& p) {
  61.         ApelTelefonic& apel = dynamic_cast<ApelTelefonic&>(p);
  62.         if (this->zi == apel.zi && this->ora == apel.ora && strcmp(this->tel, apel.tel) == 0)
  63.             return true;
  64.         else
  65.             return false;
  66.     }
  67. };
  68.  
  69. ostream& operator << (ostream& os, ApelTelefonic& a) {
  70.     a.display();
  71.  
  72.     return os;
  73. }
  74.  
  75. class Sedinta : public Pozitie {
  76. protected:
  77.     char* tema;
  78.     int durata;
  79. public:
  80.  
  81.     Sedinta(int zi, int ora, char* explicatie, char* tema, int durata) {
  82.         this->zi = zi;
  83.         this->ora = ora;
  84.         strcpy(this->explicatie, explicatie);
  85.         this->tema = new char[strlen(tema) + 1];
  86.         strcpy(this->tema, tema);
  87.         this->durata = durata;
  88.     }
  89.  
  90.     ~Sedinta() {
  91.         delete[] tema;
  92.     }
  93.  
  94.     void display() {
  95.         cout << "zi: " << zi << " ora: " << ora << " explicatie: " << explicatie << " tema: " << tema << endl;
  96.     }
  97.    
  98.     friend ostream& operator << (ostream& os, Sedinta& s);
  99.  
  100.     bool operator&(Pozitie& p) {
  101.         Sedinta& s = dynamic_cast<Sedinta &>(p);
  102.         if (this->ora == s.ora && this->durata == s.durata)
  103.             return true;
  104.         else
  105.             return false;
  106.     }
  107. };
  108.  
  109. ostream& operator << (ostream& os, Sedinta& s) {
  110.     s.display();
  111.  
  112.     return os;
  113. }
  114.  
  115. class Agenda {
  116. public:
  117.     Pozitie* pozitii[100];
  118.     int dim;
  119.  
  120.     Agenda() {
  121.         dim = 0;
  122.         pozitii[0] = NULL;
  123.     }
  124.  
  125.     ~Agenda() {
  126.        
  127.     }
  128.  
  129.     Agenda& operator+=(ApelTelefonic& apel) {
  130.         /*for (int i = 0; i < dim; i++) {
  131.             ApelTelefonic& a = dynamic_cast<ApelTelefonic&>(pozitii[i]);
  132.             if(!(a & apel)
  133.  
  134.         }*/
  135.         pozitii[dim] = (Pozitie*)&apel;
  136.         for (int i = 0; i < dim; i++)
  137.             for (int j = i + 1; j < dim; j++) {
  138.                 if (pozitii[j] < pozitii[i]) {
  139.                     Pozitie* aux;
  140.                     aux = pozitii[dim];
  141.                     pozitii[dim] = pozitii[i];
  142.                     pozitii[i] = aux;
  143.                 }
  144.             }
  145.            
  146.        
  147.         dim++;
  148.  
  149.         return *this;
  150.     }
  151.  
  152.     Agenda& operator+=(Sedinta& sed) {
  153.         pozitii[dim] = (Pozitie*)&sed;
  154.         for (int i = 0; i < dim; i++)
  155.             for (int j = i + 1; j < dim; j++) {
  156.                 if (pozitii[j] < pozitii[i]) {
  157.                     Pozitie* aux;
  158.                     aux = pozitii[dim];
  159.                     pozitii[dim] = pozitii[i];
  160.                     pozitii[i] = aux;
  161.                 }
  162.             }
  163.            
  164.        
  165.         dim++;
  166.  
  167.         return *this;
  168.     }
  169.  
  170.     Agenda& operator-=(ApelTelefonic& apel) {
  171.         for (int i = 0; i < dim; i++) {
  172.             if (this->pozitii[i] == (Pozitie*)&apel) {
  173.                 this->pozitii[i] = 0;
  174.                 for (int j = i; j < dim; j++) {
  175.                     this->pozitii[j] = this->pozitii[j + 1];
  176.                 }
  177.                 dim--;
  178.             }
  179.         }
  180.  
  181.         return *this;
  182.     }
  183.  
  184.     Agenda& operator-=(Sedinta& sed) {
  185.         for (int i = 0; i < dim; i++) {
  186.             if (this->pozitii[i] == (Pozitie*)&sed) {
  187.                 this->pozitii[i] = 0;
  188.                 for (int j = i; j < dim; j++) {
  189.                     this->pozitii[j] = this->pozitii[j + 1];
  190.                 }
  191.                 dim--;
  192.             }
  193.         }
  194.  
  195.         return *this;
  196.     }
  197. };
  198.  
  199. void main() {
  200.     Agenda a2014;
  201.     ApelTelefonic a1(121, 12, "telefon lui Ionescu P", "0722123321");
  202.     ApelTelefonic a2(25, 11, "suna pe Popescu I", "0722123456");
  203.     ApelTelefonic a3(11, 12, "telefon lui Ionescu P", "0722123321");
  204.  
  205.     Sedinta s1(31, 10, "Adunare generala sindicat", " Incheierea contractelor de munca", 2);
  206.  
  207.     a2014 += a1;
  208.     a2014 += a2;
  209.     a2014 += a3;
  210.     a2014 += s1;
  211.     a2014 -= a1;
  212.  
  213.     bool y = (a1 & a3);
  214.     cout << y << endl; // daca e 1 se suprapun, daca e 0, nu
  215.     cout << a1;
  216. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement