Advertisement
AbidK

pr2 3

Mar 24th, 2018
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.52 KB | None | 0 0
  1. #include <iostream>
  2. using namespace std;
  3.  
  4. struct DatumVrijeme
  5. {
  6.     int* _dan;
  7.     int* _mjesec;
  8.     int* _godina;
  9.     int* _sati;
  10.     int* _minute;
  11.  
  12.     //Standardne funkcije(unos,ispis,dealokacija)
  13.     void Unos()
  14.     {
  15.         cout << "Unesite dan, mjesec i godinu : " << endl;
  16.         int tmp;
  17.         cin >> tmp;
  18.         _dan = new int(tmp);
  19.         cin >> tmp;
  20.         _mjesec = new int(tmp);
  21.         cin >> tmp;
  22.         _godina = new int(tmp);
  23.         cout << "Unesite sate i minute : " << endl;
  24.         cin >> tmp;
  25.         _sati = new int(tmp);
  26.         cin >> tmp;
  27.         _minute = new int(tmp);
  28.         cin.ignore();
  29.     }
  30.  
  31.     void Ispis()
  32.     {
  33.         cout << "Datum : " << *_dan << "/" << *_mjesec << "/" << *_godina << endl;
  34.         cout << "Vrijeme : " << *_sati << "/" << *_minute << endl;
  35.     }
  36.  
  37.     void Dealociraj() {
  38.         delete _dan; _dan = nullptr;
  39.         delete _mjesec; _mjesec = nullptr;
  40.         delete _godina; _godina = nullptr;
  41.         delete _sati; _sati = nullptr;
  42.         delete _minute; _minute = nullptr;
  43.     }
  44.  
  45.     void Kopiraj(DatumVrijeme d) {
  46.         _dan = new int(*d._dan);
  47.         _mjesec = new int(*d._mjesec);
  48.         _godina = new int(*d._godina);
  49.         _minute = new int(*d._minute);
  50.         _sati = new int(*d._sati);
  51.     }
  52.  
  53.     bool istiDatum(DatumVrijeme d)
  54.     {
  55.         if (d._dan == _dan && d._mjesec == _mjesec && d._godina == _godina)
  56.             return true;
  57.         return false;
  58.     }
  59. };
  60.  
  61. struct Korisnik
  62. {
  63.     char *_korisnickoIme;
  64.     int _godinaRodjenja;
  65.     //Standardne funkcije
  66.  
  67.     void Unos() {
  68.         cout << "Unesite korisnicko ime : " << endl;
  69.         char tmp[100];
  70.         cin.getline(tmp, 100);
  71.         _korisnickoIme = new char[strlen(tmp) + 1];
  72.         strcpy_s(_korisnickoIme, strlen(tmp) + 1, tmp);
  73.         cout << "Unesite godinu rodjenja : " << endl;
  74.         cin >> _godinaRodjenja;
  75.         cin.ignore();
  76.     }
  77.  
  78.     void Ispis() {
  79.         cout << "Korisnicko ime : " << _korisnickoIme << endl;
  80.         cout << "Godina rodjenja : " << _godinaRodjenja << endl;;
  81.     }
  82.  
  83.     void Dealociraj() {
  84.         delete[]_korisnickoIme; _korisnickoIme = nullptr;
  85.     }
  86.  
  87.     void Kopiraj(Korisnik k) {
  88.         _korisnickoIme = new char[strlen(k._korisnickoIme)+1];
  89.         strcpy_s(_korisnickoIme, strlen(k._korisnickoIme)+1, k._korisnickoIme);
  90.         _godinaRodjenja = k._godinaRodjenja;
  91.     }
  92.  
  93. };
  94.  
  95. struct Komentar
  96. {
  97.     char * _komentar;
  98.     DatumVrijeme _vrijemeKomentara;
  99.     Korisnik _korisnik;
  100.  
  101.     //Standardne funkcije
  102.  
  103.  
  104.     void Unos() {
  105.         cout << "Unesite komentar : " << endl;
  106.         char tmp[100];
  107.         cin.getline(tmp, 100);
  108.         _komentar = new char[strlen(tmp) + 1];
  109.         strcpy_s(_komentar, strlen(tmp) + 1, tmp);
  110.  
  111.         cout << "***VRIJEME KOMENTARA***" << endl;
  112.         _vrijemeKomentara.Unos();
  113.         cout << "***KORISTNIK KOMENTARA***" << endl;
  114.         _korisnik.Unos();
  115.     }
  116.  
  117.     void Ispis() {
  118.         cout << "Komentar : " << _komentar;
  119.         cout << "***VRIJEME KOMENTARA***" << endl;
  120.         _vrijemeKomentara.Ispis();
  121.         cout << "***KORISNIK KOMENTARA***" << endl;
  122.         _korisnik.Ispis();
  123.     }
  124.  
  125.     void Kopiraj(Komentar k){
  126.         _komentar = new char[strlen(k._komentar) + 1];
  127.         strcpy_s(_komentar, strlen(k._komentar) + 1, k._komentar);
  128.         _vrijemeKomentara.Kopiraj(k._vrijemeKomentara);
  129.         _korisnik.Kopiraj(k._korisnik);
  130.     }
  131.  
  132.     void Dealociraj()
  133.     {
  134.         _vrijemeKomentara.Dealociraj();
  135.         _korisnik.Dealociraj();
  136.         delete[] _komentar; _komentar = nullptr;
  137.     }
  138.  
  139. };
  140.  
  141. struct Objava
  142. {
  143.     char * _tekst;
  144.     DatumVrijeme _vrijemeObjave;
  145.     Korisnik _korisnik;
  146.     Komentar * _komentari;//komentari na objavu
  147.     int _trenutnoKomentara;
  148.  
  149.     //Standardne funkcije
  150.  
  151.     void Unos() {
  152.         cout << "***UNOS OBJAVE***" << endl;
  153.         cout << "Unesite tekst : " << endl;
  154.         char tmp[100];
  155.         cin.getline(tmp, 100);
  156.         _tekst = new char[strlen(tmp) + 1];
  157.         strcpy_s(_tekst, strlen(tmp) + 1, tmp);
  158.         cout << "*** VRIJEME OBJAVE ***" << endl;
  159.         _vrijemeObjave.Unos();
  160.         cout << "*** KORISNIK OBJAVE *** " << endl;
  161.         _korisnik.Unos();
  162.  
  163.         _trenutnoKomentara = 0;
  164.         _komentari = nullptr;
  165.     }
  166.  
  167.     void Ispis() {
  168.         cout << "***ISPIS OBJAVE***" << endl;
  169.         cout << "Tekst : " << _tekst << endl;
  170.         cout << "***VRIJEME OBJAVE***" << endl;
  171.         _vrijemeObjave.Ispis();
  172.         cout << "***ISPIS KORISNIKA***" << endl;
  173.         _korisnik.Ispis();
  174.         cout << "***ISPIS KOMENTARA***" << endl;
  175.         cout << "Trenutno komentara : " << _trenutnoKomentara << endl;
  176.         for (int i = 0; i < _trenutnoKomentara; i++)
  177.             _komentari[i].Ispis();
  178.     }
  179.  
  180.     void Dealociraj() {
  181.         delete[] _tekst; _tekst = nullptr;
  182.         _vrijemeObjave.Dealociraj();
  183.         _korisnik.Dealociraj();
  184.         for (int i = 0; i < _trenutnoKomentara; i++)
  185.             _komentari[i].Dealociraj();
  186.         delete[] _komentari;
  187.     }
  188.  
  189.     void dodajKomentar(char * komentar, DatumVrijeme vrijemeKomentara, Korisnik k) {
  190.         Komentar* noviNiz = new Komentar[_trenutnoKomentara + 1];
  191.         for (int i = 0; i < _trenutnoKomentara; i++)
  192.             noviNiz[i].Kopiraj(_komentari[i]);
  193.  
  194.         cout << "***DODAJ KOMENTAR***" << endl;
  195.         /*cout << "Upisite komentar : " << endl;
  196.         char tmp[100];
  197.         cin.getline(tmp, 100);
  198.         komentar = new char[strlen(tmp) + 1];
  199.         strcpy_s(komentar, strlen(tmp) + 1, tmp);
  200.         noviNiz[_trenutnoKomentara]._komentar = komentar;*/
  201.        
  202.         noviNiz[_trenutnoKomentara]._komentar = new char[strlen(komentar) + 1];
  203.         strcpy_s(noviNiz[_trenutnoKomentara]._komentar, strlen(komentar) + 1, komentar);
  204.  
  205.         cout <<"***VRIJEME KOMENTARA***" << endl;
  206.         noviNiz[_trenutnoKomentara]._vrijemeKomentara.Kopiraj(vrijemeKomentara);
  207.  
  208.         cout << "***KORISNIK KOMENTARA***" << endl;
  209.         noviNiz[_trenutnoKomentara]._korisnik.Kopiraj(k);
  210.  
  211.         for (int i = 0; i < _trenutnoKomentara; i++)
  212.             _komentari[i].Dealociraj();
  213.  
  214.         delete[] _komentari;
  215.         _komentari = noviNiz;
  216.         _trenutnoKomentara++;
  217.     }
  218.    
  219.     void dodajKomentar(Komentar k) {
  220.         char* komentar;
  221.         cout << "Upisite komentar : " << endl;
  222.         char tmp[100];
  223.         cin.getline(tmp, 100);
  224.         komentar = new char[strlen(tmp) + 1];
  225.         strcpy_s(komentar, strlen(tmp) + 1, tmp);
  226.        
  227.         dodajKomentar(komentar, k._vrijemeKomentara, k._korisnik);
  228.     }
  229.  
  230.     void dodajKomentar() {
  231.         Komentar* noviNiz = new Komentar[_trenutnoKomentara + 1];
  232.         for (int i = 0; i < _trenutnoKomentara; i++)
  233.             noviNiz[i].Kopiraj(_komentari[i]);
  234.            
  235.         noviNiz[_trenutnoKomentara].Unos();
  236.  
  237.         for (int i = 0; i < _trenutnoKomentara; i++)
  238.             _komentari[i].Dealociraj();
  239.         delete[]_komentari;
  240.         _komentari = noviNiz;
  241.  
  242.         _trenutnoKomentara++;
  243.     }
  244.  
  245.     //uklanja komentar na osnovu vremena kada je isti dodan
  246.     bool ukloniKomentar(DatumVrijeme vrijemeKomentara);
  247.    
  248. };
  249.  
  250.  
  251. //U main funkciji napraviti vise objava, pronaci objavu koja ima najvise komentara
  252. //Ispisati objavu u main funkciji
  253. Objava* NajaktivnijaObjave(Objava * objave);
  254.  
  255.  
  256. void main()
  257. {
  258.     Objava a;
  259.     DatumVrijeme d;
  260.     Korisnik k;
  261.     //d.Unos();
  262.     //k.Unos();
  263.     a.Unos();
  264.     //a.dodajKomentar("tekst",d,k);
  265.     a.dodajKomentar();
  266.     a.dodajKomentar();
  267.  
  268.    
  269.     a.Ispis();
  270.  
  271.     system("pause>0");
  272. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement