Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- struct Datum {
- int* _dan;
- int* _mjesec;
- int* _godina;
- void Unos() {
- cout << "Dan: ";
- int tmp;
- cin >> tmp;
- cin.ignore();
- _dan = new int(tmp);
- cout << "Mjesec: ";
- cin >> tmp;
- cin.ignore();
- _mjesec = new int(tmp);
- cout << "Godina: ";
- cin >> tmp;
- cin.ignore();
- _godina = new int(tmp);
- }
- void Ispis() {
- cout << "Datum: " << *_dan << "/" << *_mjesec << "/" << *_godina << endl;
- }
- void Dealociraj()
- {
- delete _dan; _dan = nullptr;
- delete _mjesec; _mjesec = nullptr;
- delete _godina; _godina = nullptr;
- }
- void Kopiraj(Datum d) {
- _dan = new int(*d._dan);
- _mjesec = new int(*d._mjesec);
- _godina = new int(*d._godina);
- }
- };
- struct Autor {
- char* _ime;
- char* _prezime;
- char* _mjestoRodjenja;
- Datum _datumRodjenja;
- void Unos() {
- cout << "Ime autora: ";
- char tmp[100];
- cin.getline(tmp, 100);
- _ime = new char[strlen(tmp) + 1];
- strcpy_s(_ime, strlen(tmp) + 1, tmp);
- cout << "Prezime autora: ";
- cin.getline(tmp, 100);
- _prezime = new char(strlen(tmp) + 1);
- strcpy_s(_prezime, strlen(tmp) + 1, tmp);
- cout << "Mjesto rodjenja autora: ";
- cin.getline(tmp, 100);
- _mjestoRodjenja = new char(strlen(tmp) + 1);
- strcpy_s(_mjestoRodjenja, strlen(tmp) + 1, tmp);
- _datumRodjenja.Unos();
- }
- void Ispis() {
- cout << "Ime autora: " << _ime << endl;
- cout << "Prezime autora: " << _prezime << endl;
- cout << "Mjesto rodjenja autora: " << _mjestoRodjenja << endl;
- _datumRodjenja.Ispis();
- }
- void Dealociraj() {
- delete[] _ime; _ime = nullptr;
- delete[] _prezime; _prezime = nullptr;
- delete[] _mjestoRodjenja; _mjestoRodjenja = nullptr;
- _datumRodjenja.Dealociraj();
- }
- void Kopiraj(Autor a) {
- _ime = new char[strlen(a._ime) + 1];
- _prezime = new char[strlen(a._prezime) + 1];
- _mjestoRodjenja = new char[strlen(a._mjestoRodjenja) + 1];
- strcpy_s(_ime, strlen(a._ime) + 1, a._ime);
- strcpy_s(_prezime, strlen(a._prezime) + 1, a._prezime);
- strcpy_s(_mjestoRodjenja, strlen(a._mjestoRodjenja) + 1, a._mjestoRodjenja);
- _datumRodjenja.Kopiraj(a._datumRodjenja);
- }
- };
- struct Knjiga {
- char* _naziv;
- char* _opis;
- Datum* _datumIzdavanja;
- Autor _autor;
- void Unos() {
- cout << "Naziv knjige: ";
- char tmp[100];
- cin.getline(tmp, 100);
- _naziv = new char[strlen(tmp) + 1];
- strcpy_s(_naziv, strlen(tmp) + 1, tmp);
- cout << "Opis knjige: ";
- cin.getline(tmp, 100);
- _opis = new char[strlen(tmp) + 1];
- strcpy_s(_opis, strlen(tmp) + 1, tmp);
- _datumIzdavanja = new Datum();
- _datumIzdavanja->Unos();
- _autor.Unos();
- cin.ignore();
- }
- void Ispis() {
- cout << "Naziv knjige: " << _naziv << endl;
- cout << "Opis knjige: " << _opis << endl;
- cout << "Datum izdavanja knjige: ";
- _datumIzdavanja->Ispis();
- _autor.Ispis();
- }
- void Dealokacija()
- {
- delete[] _naziv; _naziv = nullptr;
- delete[] _opis; _opis = nullptr;
- _autor.Dealociraj();
- _datumIzdavanja->Dealociraj();
- delete _datumIzdavanja;
- }
- void Kopiraj(Knjiga k) {
- _naziv = new char[strlen(k._naziv) + 1];
- strcpy_s(_naziv, strlen(k._naziv) + 1, k._naziv);
- _opis = new char[strlen(k._opis) + 1];
- strcpy_s(_opis, strlen(k._opis) + 1, k._opis);
- _autor.Kopiraj(k._autor);
- _datumIzdavanja = new Datum();
- _datumIzdavanja->Kopiraj(*k._datumIzdavanja);
- }
- };
- struct Biblioteka {
- char* _grad;
- int _trenutnoK;
- Knjiga*_knjige;
- void Unos() {
- cout << "naziv grada gdje se nalazi biblioteka: ";
- char tmp[100];
- cin.getline(tmp, 100);
- _grad = new char[strlen(tmp) + 1];
- strcpy_s(_grad, strlen(tmp) + 1, tmp);
- _trenutnoK = 0;
- _knjige = nullptr;
- cin.ignore();
- }
- void DodajKnjigu() {
- Knjiga*noviNiz = new Knjiga[_trenutnoK + 1];
- for (size_t i = 0; i < _trenutnoK; i++)
- {
- noviNiz[i] = _knjige[i];
- //noviNiz[i].Kopiraj(_knjige[i]);
- }
- noviNiz[_trenutnoK].Unos();
- delete[] _knjige;
- _knjige = noviNiz;
- _trenutnoK++;
- }
- void ispiseSveKnjige() {
- for (size_t i = 0; i < _trenutnoK; i++)
- {
- _knjige[i].Ispis();
- }
- }
- void IzbrisiKnjigu(char * nazivKnjige) {
- int indexZaBrisanje = -1;
- for (size_t i = 0; i < _trenutnoK; i++)
- {
- if (strcmp(_knjige[i]._naziv, nazivKnjige) == 0) {
- indexZaBrisanje = i;
- }
- }
- if (indexZaBrisanje != -1)
- {
- Knjiga* noviNiz = new Knjiga[_trenutnoK - 1];
- for (size_t i = 0; i < _trenutnoK; i++)
- {
- noviNiz[i] = _knjige[i];
- //noviNiz[i].Kopiraj(_knjige[i]);
- }
- for (int i = indexZaBrisanje; i < _trenutnoK - 1; i++)
- {
- noviNiz[i] = _knjige[i + 1];
- //noviNiz[i].Kopiraj(_knjige[i]);
- }
- delete[] _knjige;
- _knjige = noviNiz;
- _trenutnoK--;
- cout << "Knjiga izbrisana..." << endl;
- }
- else
- {
- cout << "Nije pronadjena ni jedna knjiga s tim nazivom..." << endl;
- }
- }
- };
- void main()
- {
- Knjiga k;
- //k.Unos();
- //k.Ispis();
- Biblioteka bib;
- bib.Unos();
- bib.DodajKnjigu();
- bib.DodajKnjigu();
- //bib.DodajKnjigu();
- //system("cls");
- bib.IzbrisiKnjigu("test");
- cout << "Preostale knjige su " << endl;
- bib.ispiseSveKnjige();
- system("pause>0");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement