Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- using namespace std;
- enum VrstaVozila{PUTNICKO = 1, TERETNO };
- char *crt = "\n=================================\n";
- struct Datum {
- int _dan, _mjesec, _godina;
- void Unos() { cin >> _dan >> _mjesec >> _godina; }
- void Unos(int d, int m, int g){ _dan = d; _mjesec = m; _godina = g; }
- void Prikazi(){ cout << _dan << "/" << _mjesec << "/" << _godina << endl; }
- };
- struct Vozilo{
- char _regOznaka[10];
- char *_markaTip;
- int _godinaProizvodnje;
- Datum _registrovanoDO; //objekat druge strukture
- VrstaVozila _vrsta; //enumeracija
- void Unos(char *_regOznaka){
- char temp[50];
- int vrstaV;
- strcpy(this->_regOznaka, _regOznaka);
- cout << "Unesite marku vozila: ";
- cin.getline(temp, 50);
- _markaTip = new char[strlen(temp) + 1];
- strcpy(_markaTip, temp);
- cout << "Godina proizvodnje: ";
- cin >> _godinaProizvodnje;
- cout << "Datum registracije (DD/MM/GGGG): ";
- _registrovanoDO.Unos();
- cout << "Vrsta vozila: 1-Putnicko, 2-Teretno: ";
- cin >> vrstaV;
- cin.ignore();
- _vrsta = (VrstaVozila)vrstaV;
- }
- void Prikazi(){
- cout << "Vrsta vozila: ";
- if (_vrsta = PUTNICKO)
- cout << "Putnicko" << endl;
- else
- cout << "Teretno" << endl;
- cout << "Registarske oznake: " << _regOznaka << endl;
- cout << "Marka: " << _markaTip << endl;
- cout << "Godina proizvodnje: " << _godinaProizvodnje << endl;
- cout << "Registrovan do: ";
- _registrovanoDO.Prikazi();
- }
- void Dealociraj(){
- delete [] _markaTip; _markaTip = NULL;
- }
- };
- struct Vlasnik{
- char *_imePrezime;
- char _JMBG[14];
- Datum _datumRodjenja; //objekat druge strukture
- //niz od 10 pokazivaca na objekte tipa Vozilo
- Vozilo *_vozila; //pretpostavimo da po zakonu vlasnik ne smije imati vise od 10 vozila
- int _brojacVozila; //brojac nam govori koliko vozila vlasnik posjeduje
- void Unos(){
- char temp[50];
- cout << "Ime i prezime: ";
- cin.getline(temp, 50);
- _imePrezime = new char[strlen(temp) + 1];
- strcpy(_imePrezime, temp);
- cout << "JMBG: ";
- cin >> _JMBG;
- cout << "Datum rodjenja vlasnika: ";
- _datumRodjenja.Unos();
- cin.ignore();
- _vozila = new Vozilo[10];
- _brojacVozila = 0;
- }
- void DodajVozilo(){
- if (_brojacVozila < 10) {
- char _tempReg[10];
- cout << "Registracijske oznake: ";
- cin.getline(_tempReg, 10);
- Vozilo *t = GetVozilo(_tempReg);
- if (t == NULL) {
- _vozila[_brojacVozila].Unos(_tempReg);
- _brojacVozila++;
- }
- else cout << "Vozilo vec posjedujete!" << endl;
- }
- else cout << "Ne mozete imati vise od 10 vozila!" << endl;
- }
- void UkloniVozilo(){
- if (_brojacVozila != 0){
- _brojacVozila--;
- _vozila[_brojacVozila].Dealociraj();
- }
- }
- Vozilo *GetVozilo(char *RegOznaka){
- for (int i = 0; i < _brojacVozila; i++){
- if ((strcmp(_vozila[i]._regOznaka, RegOznaka)) == 0)
- return &_vozila[i];
- }
- return NULL;
- }
- void Prikazi(){
- cout << "Ime i prezime: " << _imePrezime << endl;
- cout << "Datum rodjenja: ";
- _datumRodjenja.Prikazi();
- cout << "JMBG: " << _JMBG << endl;
- for (int i = 0; i < _brojacVozila; i++) {
- cout << "\t::VOZILO " << i + 1 << "::" <<endl;
- _vozila[i].Prikazi();
- }
- }
- void Dealociraj(){
- delete []_imePrezime; _imePrezime = NULL;
- for (int i = 0; i < _brojacVozila; i++)
- _vozila[i].Dealociraj();
- delete [] _vozila; _vozila = NULL;
- }
- };
- void main(){
- int brojVlasnika;
- cout << "Unesite broj vlasnika: " << endl;
- cin >> brojVlasnika;
- cin.ignore();
- Vlasnik *pok = new Vlasnik[brojVlasnika];
- for (int i = 0; i < brojVlasnika; i++){
- cout << crt << "\t::UNOS VLASNIKA " << i + 1 << "::" << crt;
- pok[i].Unos();
- cout << crt << "\t::UNOS VOZILA ZA VLASNIKA " << i + 1 << "::" << crt;
- pok[i].DodajVozilo();
- }
- cout << endl << "Prikazivanje vlasnika i svih njegovih osobina..." << endl;
- for (int i = 0; i < brojVlasnika; i++) {
- cout << crt << "\t::VLASNIK " <<i + 1 << "::" <<crt;
- pok[i].Prikazi();
- }
- for (int i = 0; i < brojVlasnika; i++)
- pok[i].Dealociraj();
- delete []pok; pok = NULL;
- system("pause>0");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement