Advertisement
Guest User

Untitled

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