Advertisement
Guest User

Untitled

a guest
Mar 20th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.21 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement