Advertisement
AnaGocevska

Untitled

Mar 29th, 2015
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.73 KB | None | 0 0
  1. // vashiot kod ovde
  2. #include <iostream>
  3. #include <cstring>
  4.  
  5. using namespace std;
  6.  
  7. class Statija
  8. {
  9.     private:
  10.     char naslov[100];
  11.     char avtor[50];
  12.     char *sodrzhina;
  13.     bool objavena;
  14.    
  15.     public:
  16.    
  17.     Statija(char *naslov="", char *avtor="", char *sodrzhina="", bool objavena=false)
  18.     {
  19.         strcpy(this->naslov, naslov);
  20.         strcpy(this->avtor, avtor);
  21.        
  22.         this->sodrzhina = new char[strlen(sodrzhina)+1];
  23.         strcpy(this->sodrzhina, sodrzhina);
  24.        
  25.         this->objavena = objavena;
  26.     }
  27.    
  28.     Statija(const Statija &s)
  29.     {
  30.         strcpy(this->naslov, s.naslov);
  31.         strcpy(this->avtor, s.avtor);
  32.        
  33.         this->sodrzhina = new char[strlen(s.sodrzhina)+1];
  34.         strcpy(this->sodrzhina, s.sodrzhina);
  35.        
  36.         this->objavena = s.objavena;
  37.     }
  38.    
  39.     ~Statija()
  40.     {
  41.         delete[]this->sodrzhina;
  42.     }
  43.    
  44.     Statija &operator = (Statija &s)
  45.     {
  46.         if(this!= &s)
  47.         {
  48.         strcpy(this->naslov, s.naslov);
  49.         strcpy(this->avtor, s.avtor);
  50.         delete[]this->sodrzhina;
  51.         this->sodrzhina = new char[strlen(s.sodrzhina)+1];
  52.         strcpy(this->sodrzhina, s.sodrzhina);
  53.         this->objavena = s.objavena;
  54.         }
  55.        
  56.         return *this;
  57.     }
  58.    
  59.     char *getSodrzhina()
  60.     {
  61.         return this->sodrzhina;
  62.     }
  63.    
  64.     char *getAvtor()
  65.     {
  66.         return this->avtor;
  67.     }
  68.    
  69.     char *getNaslov()
  70.     {
  71.         return this->naslov;
  72.     }
  73.    
  74.     bool getObjavena()
  75.     {
  76.         return this->objavena;
  77.     }
  78.        
  79.    
  80.     void pecati()
  81.     {
  82.         cout<<this->naslov<<endl;
  83.         cout<<this->avtor<<endl;
  84.         cout<<this->sodrzhina<<endl;
  85.     }
  86. };
  87.  
  88. class Vesnik
  89. {
  90.     private:
  91.    
  92.     char ime[100];
  93.     Statija *s;
  94.     int brStatii;
  95.     Statija prva;
  96.    
  97.     public:
  98.    
  99.     Vesnik(char *ime="", Statija prva=0)
  100.     {
  101.         strcpy(this->ime, ime);
  102.         this->prva = prva;
  103.         brStatii = 0;         /*се друго што не е во конструктор
  104.                                   иницијализираме на 0*/
  105.         //this->s=new Statija[0];
  106.         s = NULL;
  107.     }
  108.    
  109.     Vesnik(Vesnik &v)
  110.     {
  111.         strcpy(this->ime, v.ime);
  112.         this->s = new Statija[this->brStatii];
  113.         for(int i=0; i<this->brStatii; i++)
  114.         {
  115.             this->s[i] = v.s[i];
  116.         }
  117.         this->brStatii = v.brStatii;
  118.         this->prva=v.prva;
  119.     }
  120.    
  121.     Vesnik &operator = (Vesnik &v)
  122.     {
  123.         if(this!=&v)
  124.         {
  125.         strcpy(this->ime, v.ime);
  126.         delete[]this->s;
  127.         this->s = new Statija[this->brStatii];
  128.         for(int i=0; i<this->brStatii; i++)
  129.         {
  130.             this->s[i] = v.s[i];
  131.         }
  132.         this->brStatii = v.brStatii;
  133.         this->prva = v.prva;
  134.         }
  135.        
  136.         return *this;
  137.     }
  138.    
  139.     void dodadiStatija(Statija S)
  140.     {
  141.         Statija *tmp;
  142.         tmp = new Statija[this->brStatii];
  143.         for(int i=0; i<this->brStatii; i++)
  144.         {
  145.             tmp[i] = s[i];
  146.         }
  147.         delete[]this->s;
  148.         this->s = new Statija[this->brStatii+1];
  149.         for(int i=0; i<this->brStatii; i++)
  150.         {
  151.             this->s[i] = tmp[i];
  152.         }
  153.         delete[]tmp;
  154.         this->s[brStatii]=S;
  155.         this->brStatii++;
  156.      
  157.     }
  158.    
  159.     void pecatiNajdolga()
  160.     {
  161.         int counter;
  162.         int max=0, n;
  163.        
  164.         for(int i=0; i<this->brStatii; i++)
  165.         {
  166.             n = strlen(s[i].getSodrzhina());
  167.             if(n>max)
  168.             {
  169.                 max=n;
  170.                 counter = i;
  171.             }
  172.         }
  173.         s[counter].pecati();
  174.     }
  175.    
  176.     void pecatiPrva()
  177.     {
  178.         prva.pecati();
  179.     }
  180.    
  181.     int vkupnoOdAvtor(char *avtor)
  182.     {
  183.         int brojac=0;
  184.         for(int i=0; i<this->brStatii; i++)
  185.         {
  186.             if(strcmp(this->s[i].getAvtor(), avtor)==0)
  187.             {
  188.                 brojac++;
  189.             }
  190.         }
  191.         return brojac;
  192.     }
  193. }; //крај класа Vesnik
  194.  
  195. int main() {
  196.     char naslov[100], avtor[50], sodrzina[100];
  197.     int brStatii;
  198.     cin >> brStatii;
  199.     char ime[100];
  200.     cin.getline(ime, 100);
  201.     cin.getline(ime, 100);
  202.  
  203.     Statija prva("VAZNO","OOP","Vezba:OOP",true);
  204.     Vesnik v(ime,prva);
  205.     Statija **s = new Statija*[brStatii];
  206.     for(int i = 0; i < brStatii; ++i) {
  207.         cin.getline(naslov, 100);
  208.         cin.getline(avtor, 50);
  209.         cin.getline(sodrzina, 100);
  210.         v.dodadiStatija(Statija(naslov, avtor, sodrzina, true)); //se koristi copy konstruktor
  211.     }
  212.     v.pecatiPrva();
  213.     v.pecatiNajdolga();
  214.     cout << v.vkupnoOdAvtor(avtor) << endl;
  215.     for(int i = 0; i < brStatii; ++i) {
  216.         delete s[i];
  217.     }
  218.     delete [] s;
  219.     return 0;
  220. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement