Advertisement
Guest User

Untitled

a guest
Mar 29th, 2015
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.57 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. class Statija
  6. {
  7.     char naslov[100];
  8.     char avtor[50];
  9.     char *sodrzina;
  10.     bool objavena;
  11. public:
  12.     Statija() {}
  13.     Statija(const char* naslov, const char* avtor, const char *sodrzina, bool objavena){
  14.         strcpy(this->naslov, naslov);
  15.         strcpy(this->avtor, avtor);
  16.         this->sodrzina = new char[strlen(sodrzina) + 1];
  17.         strcpy(this->sodrzina, sodrzina);
  18.         this->objavena = objavena;
  19.     }
  20.     Statija& operator= (Statija &k){
  21.         if (this != &k){
  22.             strcpy(naslov, k.naslov);
  23.             strcpy(avtor, k.avtor);
  24.             sodrzina = new char[strlen(k.sodrzina) + 1];
  25.             strcpy(sodrzina, k.sodrzina);
  26.             objavena = k.objavena;
  27.         }
  28.         return *this;
  29.     }
  30.     Statija(const Statija& k){
  31.         strcpy(naslov, k.naslov);
  32.         strcpy(avtor, k.avtor);
  33.         sodrzina = new char[strlen(k.sodrzina) + 1];
  34.         strcpy(sodrzina, k.sodrzina);
  35.         objavena = k.objavena;
  36.     }
  37.     void pecati(){
  38.         cout << naslov << endl << avtor << endl << sodrzina << endl;
  39.     }
  40.     friend class Vesnik;
  41.     ~Statija(){
  42.         delete[] sodrzina;
  43.     }
  44. };
  45.  
  46. class Vesnik
  47. {
  48.     char ime[100];
  49.     Statija *p;
  50.     int statii;
  51.     Statija prva;
  52. public:
  53.     Vesnik() {}
  54.     Vesnik(char *ime, Statija prva){
  55.         strcpy(this->ime, ime);
  56.         this->prva = prva;
  57.         statii = 0;
  58.     }
  59.     void dodadiStatija(Statija &s){
  60.         Statija *tmp = new Statija[statii + 1];
  61.         for (int i = 0; i<statii; i++){
  62.             tmp[i] = p[i];
  63.         }
  64.         tmp[statii++] = s;
  65.         if (statii!=1)
  66.             delete[] p;
  67.         p = tmp;
  68.     }
  69.     void pecatiNajdolga(){
  70.         int max = strlen(p[0].sodrzina);
  71.         int indeks = 0;
  72.         for (int i = 0; i<statii; i++){
  73.             if (strlen(p[i].sodrzina)>max){
  74.                 max = strlen(p[i].sodrzina);
  75.                 indeks = i;
  76.             }
  77.         }
  78.         p[indeks].pecati();
  79.     }
  80.     void pecatiPrva(){
  81.         prva.pecati();
  82.     }
  83.     int vkupnoOdAvtor(const char *avtor){
  84.         int n = 0;
  85.         for (int i = 0; i<statii; i++){
  86.             if (!(strcmp(p[i].avtor, avtor))){
  87.                 n++;
  88.             }
  89.         }
  90.         return n;
  91.     }
  92.     ~Vesnik(){
  93.         delete[] p;
  94.     }
  95. };
  96.  
  97. int main()
  98. {
  99.     char naslov[100], avtor[50], sodrzina[100];
  100.     int n;
  101.     cin >> n;
  102.     char ime[100];
  103.     cin.getline(ime, 100);
  104.     cin.getline(ime, 100);
  105.  
  106.     Statija prva("VAZNO", "OOP", "Vezba:OOP", true);
  107.     //prva.pecati();
  108.     Vesnik v(ime, prva);
  109.     //Vesnik v;
  110.     //Statija **s = new Statija*[n];
  111.     for (int i = 0; i < n; ++i) {
  112.         cin.getline(naslov, 100);
  113.         cin.getline(avtor, 50);
  114.         cin.getline(sodrzina, 100);
  115.         Statija s(naslov, avtor, sodrzina, true);
  116.         v.dodadiStatija(s); //se koristi copy konstruktor
  117.     }
  118.     v.pecatiPrva();
  119.     v.pecatiNajdolga();
  120.     cout << v.vkupnoOdAvtor(avtor) << endl;
  121.     /*for(int i = 0; i < n; ++i) { delete s[i]; }*/
  122.     //delete [] s;
  123.     return 0;
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement