Advertisement
adnanj

Zadatak - registracija vozila

Jul 7th, 2014
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.00 KB | None | 0 0
  1. #include<iostream>
  2. using namespace std;
  3.  
  4. enum VrstaVozila{PUTNICKO = 1, TERETNO };
  5.  
  6. char *crt = "\n=================================\n";
  7.  
  8. struct Datum {
  9.     int _dan, _mjesec, _godina;
  10.     void Unos() { cin >> _dan >> _mjesec >> _godina; }
  11.     void Unos(int d, int m, int g){ _dan = d; _mjesec = m; _godina = g; }
  12.     void Prikazi(){ cout << _dan << "/" << _mjesec << "/" << _godina << endl; }
  13. };
  14.  
  15. struct Vozilo{
  16.     char _regOznaka[10];
  17.     char *_markaTip;
  18.     int _godinaProizvodnje;
  19.     Datum _registrovanoDO; //objekat druge strukture
  20.     VrstaVozila _vrsta; //enumeracija
  21.     void Unos(char *_regOznaka){
  22.         char temp[50];
  23.         int vrstaV;
  24.         strcpy(this->_regOznaka, _regOznaka);
  25.         cout << "Unesite marku vozila: ";
  26.         cin.getline(temp, 50);
  27.         _markaTip = new char[strlen(temp) + 1];
  28.         strcpy(_markaTip, temp);
  29.         cout << "Godina proizvodnje: ";
  30.         cin >> _godinaProizvodnje;
  31.         cout << "Datum registracije (DD/MM/GGGG): ";
  32.         _registrovanoDO.Unos();
  33.         cout << "Vrsta vozila: 1-Putnicko, 2-Teretno: ";
  34.         cin >> vrstaV;
  35.         cin.ignore();
  36.         _vrsta = (VrstaVozila)vrstaV;
  37.     }
  38.     void Prikazi(){
  39.         cout << "Vrsta vozila: ";
  40.         if (_vrsta = PUTNICKO)
  41.             cout << "Putnicko" << endl;
  42.         else
  43.             cout << "Teretno" << endl;
  44.         cout << "Registarske oznake: " << _regOznaka << endl;
  45.         cout << "Marka: " << _markaTip << endl;
  46.         cout << "Godina proizvodnje: " << _godinaProizvodnje << endl;
  47.         cout << "Registrovan do: ";
  48.         _registrovanoDO.Prikazi();
  49.     }
  50.     void Dealociraj(){
  51.         delete [] _markaTip; _markaTip = NULL;
  52.     }
  53. };
  54.  
  55. struct Vlasnik{
  56.     char *_imePrezime;
  57.     char _JMBG[14];
  58.     Datum _datumRodjenja; //objekat druge strukture
  59.     //niz od 10 pokazivaca na objekte tipa Vozilo
  60.     Vozilo *_vozila; //pretpostavimo da po zakonu vlasnik ne smije imati vise od 10 vozila
  61.     int _brojacVozila; //brojac nam govori koliko vozila vlasnik posjeduje
  62.     void Unos(){
  63.         char temp[50];
  64.         cout << "Ime i prezime: ";
  65.         cin.getline(temp, 50);
  66.         _imePrezime = new char[strlen(temp) + 1];
  67.         strcpy(_imePrezime, temp);
  68.         cout << "JMBG: ";
  69.         cin >> _JMBG;
  70.         cout << "Datum rodjenja vlasnika: ";
  71.         _datumRodjenja.Unos();
  72.         cin.ignore();
  73.         _vozila = new Vozilo[10];
  74.         _brojacVozila = 0;
  75.     }
  76.  
  77.     void DodajVozilo(){
  78.         if (_brojacVozila < 10) {
  79.             char _tempReg[10];
  80.             cout << "Registracijske oznake: ";
  81.             cin.getline(_tempReg, 10);
  82.             Vozilo *t = GetVozilo(_tempReg);
  83.             if (t == NULL) {
  84.                 _vozila[_brojacVozila].Unos(_tempReg);
  85.                 _brojacVozila++;
  86.             }
  87.             else cout << "Vozilo vec posjedujete!" << endl;
  88.         }
  89.         else cout << "Ne mozete imati vise od 10 vozila!" << endl;
  90.     }
  91.  
  92.     void UkloniVozilo(){
  93.         if (_brojacVozila != 0){
  94.             _brojacVozila--;
  95.             _vozila[_brojacVozila].Dealociraj();
  96.         }
  97.     }
  98.  
  99.     Vozilo *GetVozilo(char *RegOznaka){
  100.         for (int i = 0; i < _brojacVozila; i++){
  101.             if ((strcmp(_vozila[i]._regOznaka, RegOznaka)) == 0)
  102.                 return &_vozila[i];
  103.         }
  104.         return NULL;
  105.     }
  106.  
  107.     void Prikazi(){
  108.         cout << "Ime i prezime: " << _imePrezime << endl;
  109.         cout << "Datum rodjenja: ";
  110.         _datumRodjenja.Prikazi();
  111.         cout << "JMBG: " << _JMBG << endl;
  112.         for (int i = 0; i < _brojacVozila; i++) {
  113.             cout << "\t::VOZILO " << i + 1 << "::" <<endl;
  114.             _vozila[i].Prikazi();
  115.         }
  116.     }
  117.  
  118.     void Dealociraj(){
  119.         delete []_imePrezime; _imePrezime = NULL;
  120.         for (int i = 0; i < _brojacVozila; i++)
  121.             _vozila[i].Dealociraj();
  122.         delete [] _vozila;  _vozila = NULL;
  123.  
  124.     }
  125. };
  126. void main(){
  127.     int brojVlasnika;
  128.     cout << "Unesite broj vlasnika: " << endl;
  129.     cin >> brojVlasnika;
  130.     cin.ignore();
  131.     Vlasnik *pok = new Vlasnik[brojVlasnika];
  132.     for (int i = 0; i < brojVlasnika; i++){
  133.         cout << crt << "\t::UNOS VLASNIKA " << i + 1 << "::" << crt;
  134.         pok[i].Unos();
  135.         cout << crt << "\t::UNOS VOZILA ZA VLASNIKA " << i + 1 << "::" << crt;
  136.         pok[i].DodajVozilo();
  137.     }
  138.    
  139.     cout << endl << "Prikazivanje vlasnika i svih njegovih osobina..." << endl;
  140.     for (int i = 0; i < brojVlasnika; i++) {
  141.         cout << crt << "\t::VLASNIK " <<i + 1 << "::" <<crt;
  142.         pok[i].Prikazi();
  143.     }
  144.  
  145.     for (int i = 0; i < brojVlasnika; i++)
  146.         pok[i].Dealociraj();
  147.  
  148.     delete []pok; pok = NULL;
  149.  
  150.     system("pause>0");
  151. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement