daily pastebin goal
8%
SHARE
TWEET

Untitled

a guest Mar 20th, 2018 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<iostream>
  2. using namespace std;
  3.  
  4.  
  5. struct Datum {
  6.     int* _dan;
  7.     int* _mjesec;
  8.     int* _godina;
  9.     void Unos() {
  10.         cout << "Dan: ";
  11.         int tmp;
  12.         cin >> tmp;
  13.         cin.ignore();
  14.         _dan = new int(tmp);
  15.         cout << "Mjesec: ";
  16.  
  17.  
  18.  
  19.         cin >> tmp;
  20.         cin.ignore();
  21.         _mjesec = new int(tmp);
  22.         cout << "Godina: ";
  23.  
  24.         cin >> tmp;
  25.         cin.ignore();
  26.         _godina = new int(tmp);
  27.  
  28.     }
  29.     void Ispis() {
  30.         cout << "Datum: " << *_dan << "/" << *_mjesec << "/" << *_godina << endl;
  31.     }
  32.     void Dealociraj()
  33.     {
  34.         delete _dan; _dan = nullptr;
  35.         delete _mjesec; _mjesec = nullptr;
  36.         delete _godina; _godina = nullptr;
  37.     }
  38.     void Kopiraj(Datum d) {
  39.  
  40.         _dan = new int(*d._dan);
  41.         _mjesec = new int(*d._mjesec);
  42.         _godina = new int(*d._godina);
  43.     }
  44. };
  45. struct Autor {
  46.     char* _ime;
  47.     char* _prezime;
  48.     char* _mjestoRodjenja;
  49.     Datum _datumRodjenja;
  50.     void Unos() {
  51.         cout << "Ime autora: ";
  52.         char tmp[100];
  53.        
  54.         cin.getline(tmp, 100);
  55.         _ime = new char[strlen(tmp) + 1];
  56.         strcpy_s(_ime, strlen(tmp) + 1, tmp);
  57.  
  58.         cout << "Prezime autora: ";
  59.         cin.getline(tmp, 100);
  60.         _prezime = new char(strlen(tmp) + 1);
  61.         strcpy_s(_prezime, strlen(tmp) + 1, tmp);
  62.  
  63.         cout << "Mjesto rodjenja autora: ";
  64.         cin.getline(tmp, 100);
  65.         _mjestoRodjenja = new char(strlen(tmp) + 1);
  66.         strcpy_s(_mjestoRodjenja, strlen(tmp) + 1, tmp);
  67.  
  68.         _datumRodjenja.Unos();
  69.     }
  70.     void Ispis() {
  71.         cout << "Ime autora: " << _ime << endl;
  72.         cout << "Prezime autora: " << _prezime << endl;
  73.         cout << "Mjesto rodjenja autora: " << _mjestoRodjenja << endl;
  74.         _datumRodjenja.Ispis();
  75.     }
  76.     void Dealociraj() {
  77.         delete[] _ime; _ime = nullptr;
  78.         delete[] _prezime; _prezime = nullptr;
  79.         delete[] _mjestoRodjenja; _mjestoRodjenja = nullptr;
  80.         _datumRodjenja.Dealociraj();
  81.     }
  82.     void Kopiraj(Autor a) {
  83.  
  84.         _ime = new char[strlen(a._ime) + 1];
  85.         _prezime = new char[strlen(a._prezime) + 1];
  86.         _mjestoRodjenja = new char[strlen(a._mjestoRodjenja) + 1];
  87.         strcpy_s(_ime, strlen(a._ime) + 1, a._ime);
  88.         strcpy_s(_prezime, strlen(a._prezime) + 1, a._prezime);
  89.         strcpy_s(_mjestoRodjenja, strlen(a._mjestoRodjenja) + 1, a._mjestoRodjenja);
  90.  
  91.         _datumRodjenja.Kopiraj(a._datumRodjenja);
  92.     }
  93.  
  94.  
  95. };
  96. struct Knjiga {
  97.  
  98.     char* _naziv;
  99.     char* _opis;
  100.     Datum* _datumIzdavanja;
  101.     Autor _autor;
  102.     void Unos() {
  103.  
  104.        
  105.        
  106.  
  107.         cout << "Naziv knjige: ";
  108.         char tmp[100];
  109.         cin.getline(tmp, 100);
  110.         _naziv = new char[strlen(tmp) + 1];
  111.         strcpy_s(_naziv, strlen(tmp) + 1, tmp);
  112.  
  113.        
  114.        
  115.         cout << "Opis knjige: ";
  116.         cin.getline(tmp, 100);
  117.         _opis = new char[strlen(tmp) + 1];
  118.         strcpy_s(_opis, strlen(tmp) + 1, tmp);
  119.  
  120.  
  121.         _datumIzdavanja = new Datum();
  122.         _datumIzdavanja->Unos();
  123.  
  124.         _autor.Unos();
  125.  
  126.         cin.ignore();
  127.     }
  128.    
  129.     void Ispis() {
  130.  
  131.         cout << "Naziv knjige: " << _naziv << endl;
  132.         cout << "Opis knjige: " << _opis << endl;
  133.         cout << "Datum izdavanja knjige: ";
  134.         _datumIzdavanja->Ispis();
  135.         _autor.Ispis();
  136.     }
  137.  
  138.     void Dealokacija()
  139.     {
  140.         delete[] _naziv; _naziv = nullptr;
  141.         delete[] _opis; _opis = nullptr;
  142.         _autor.Dealociraj();
  143.         _datumIzdavanja->Dealociraj();
  144.         delete _datumIzdavanja;
  145.     }
  146.  
  147.     void Kopiraj(Knjiga  k) {
  148.         _naziv = new char[strlen(k._naziv) + 1];
  149.         strcpy_s(_naziv, strlen(k._naziv) + 1, k._naziv);
  150.  
  151.         _opis = new char[strlen(k._opis) + 1];
  152.         strcpy_s(_opis, strlen(k._opis) + 1, k._opis);
  153.  
  154.         _autor.Kopiraj(k._autor);
  155.         _datumIzdavanja = new Datum();
  156.         _datumIzdavanja->Kopiraj(*k._datumIzdavanja);
  157.  
  158.     }
  159. };
  160. struct Biblioteka {
  161.  
  162.     char* _grad;
  163.     int _trenutnoK;
  164.     Knjiga*_knjige;
  165.  
  166.     void Unos() {
  167.         cout << "naziv grada gdje se nalazi biblioteka: ";
  168.         char tmp[100];
  169.        
  170.         cin.getline(tmp, 100);
  171.  
  172.         _grad = new char[strlen(tmp) + 1];
  173.         strcpy_s(_grad, strlen(tmp) + 1, tmp);
  174.  
  175.  
  176.         _trenutnoK = 0;
  177.         _knjige = nullptr;
  178.  
  179.         cin.ignore();
  180.  
  181.     }
  182.  
  183.    
  184.  
  185.     void DodajKnjigu() {
  186.  
  187.         Knjiga*noviNiz = new Knjiga[_trenutnoK + 1];
  188.  
  189.  
  190.         for (size_t i = 0; i < _trenutnoK; i++)
  191.         {
  192.             noviNiz[i] = _knjige[i];
  193.             //noviNiz[i].Kopiraj(_knjige[i]);
  194.         }
  195.         noviNiz[_trenutnoK].Unos();
  196.         delete[] _knjige;
  197.         _knjige = noviNiz;
  198.         _trenutnoK++;
  199.     }
  200.  
  201.    
  202.  
  203.     void ispiseSveKnjige() {
  204.  
  205.         for (size_t i = 0; i < _trenutnoK; i++)
  206.         {
  207.             _knjige[i].Ispis();
  208.            
  209.         }
  210.     }
  211.  
  212.  
  213.    
  214.  
  215.     void IzbrisiKnjigu(char * nazivKnjige) {
  216.  
  217.         int indexZaBrisanje = -1;
  218.  
  219.         for (size_t i = 0; i < _trenutnoK; i++)
  220.         {
  221.             if (strcmp(_knjige[i]._naziv, nazivKnjige) == 0) {
  222.                 indexZaBrisanje = i;
  223.  
  224.             }
  225.         }
  226.  
  227.         if (indexZaBrisanje != -1)
  228.         {
  229.  
  230.             Knjiga* noviNiz = new Knjiga[_trenutnoK - 1];
  231.             for (size_t i = 0; i < _trenutnoK; i++)
  232.             {
  233.                 noviNiz[i] = _knjige[i];
  234.                 //noviNiz[i].Kopiraj(_knjige[i]);
  235.             }
  236.  
  237.  
  238.             for (int i = indexZaBrisanje; i < _trenutnoK - 1; i++)
  239.             {
  240.                 noviNiz[i] = _knjige[i + 1];
  241.                 //noviNiz[i].Kopiraj(_knjige[i]);
  242.             }
  243.             delete[] _knjige;
  244.             _knjige = noviNiz;
  245.             _trenutnoK--;
  246.             cout << "Knjiga izbrisana..." << endl;
  247.  
  248.         }
  249.         else       
  250.         {
  251.             cout << "Nije pronadjena ni jedna knjiga s tim nazivom..." << endl;
  252.         }  
  253.     }
  254.  
  255. };
  256.  
  257.  
  258.  
  259. void main()
  260. {
  261.  
  262.     Knjiga k;
  263.     //k.Unos();
  264.     //k.Ispis();
  265.  
  266.     Biblioteka bib;
  267.     bib.Unos();
  268.     bib.DodajKnjigu();
  269.     bib.DodajKnjigu();
  270.     //bib.DodajKnjigu();
  271.     //system("cls");
  272.     bib.IzbrisiKnjigu("test");
  273.     cout << "Preostale knjige su " << endl;
  274.     bib.ispiseSveKnjige();
  275.  
  276.  
  277.  
  278.  
  279.  
  280.     system("pause>0");
  281.  
  282. }
RAW Paste Data
Top