Advertisement
neogz

PR1 - proslave

Sep 17th, 2014
254
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.58 KB | None | 0 0
  1. #ifdef _MSC_VER
  2. #define _CRT_SECURE_NO_WARNINGS
  3. #endif
  4. #include <iostream>
  5. using namespace std;
  6. char crt[] = { "\n----------------------------------\n" };
  7.  
  8. struct Rezervacija {
  9.     char *_imePrezime;
  10.     int _brojOsoba;
  11.     double _uplata;
  12.     //--------------------------
  13.     void Unos(){
  14.         cout << crt;
  15.         char tempIme[30];
  16.         cout << "Unesite ime osobe: ";
  17.         cin.getline(tempIme, 30);
  18.         _imePrezime = new char[strlen(tempIme) + 1];
  19.         strcpy(_imePrezime, tempIme);
  20.  
  21.         cout << "Na koliko osoba glasi rezervacija: ";
  22.         cin >> _brojOsoba;
  23.         cin.ignore();
  24.  
  25.         cout << "Koliko novca je uplaceno: ";
  26.         cin >> _uplata;
  27.         cin.ignore();
  28.     }
  29.     void Ispis(){
  30.         cout << crt << "Ime i prezime: " << _imePrezime << endl;
  31.         cout << "Na koliko osoba vazi rezervacija: " << _brojOsoba << endl;
  32.         // 50 km * broj osoba treba
  33.         if ((50 * _brojOsoba) > _uplata)
  34.             cout << "Uplaceno je: " << _uplata << " i jos se duguje: " << (_brojOsoba * 50) - _uplata  << crt;
  35.  
  36.         else cout << "Uplaceno je: " << _uplata << " te se ne duguje nista. " << crt;
  37.     }  
  38.     void UplataRezervacije(){
  39.         double dodatno;
  40.         cout << "Koliko zelite dodatno da uplatiti: ";
  41.         cin >> dodatno;
  42.         cin.ignore();
  43.         _uplata += dodatno;
  44.         double trebabitiuplaceno = _brojOsoba * 50;
  45.         if (trebabitiuplaceno < _uplata)
  46.             cout << "Uplacen je dovoljan iznos." << endl << "Osobi " << _imePrezime << " treba vratiti " << (_uplata - trebabitiuplaceno) << endl;     
  47.     }
  48. };
  49. struct Proslava{
  50.     char * _naziv;
  51.     Rezervacija * gosti[50];
  52.     int _brojRezervacija;
  53.     //---------------------------
  54.     void Unos(){
  55.         char temp[50];
  56.         cout << "Unesite naziv proslave: ";
  57.         cin.getline(temp, 50);
  58.  
  59.         _naziv = new char[strlen(temp) + 1];
  60.         strcpy(_naziv, temp);
  61.  
  62.         _brojRezervacija = 0;
  63.  
  64.     }
  65.     void Ispis(){
  66.         cout << crt << "Naziv: " << _naziv << endl;
  67.         for (int i = 0; i < _brojRezervacija; i++)
  68.             gosti[i]->Ispis();
  69.     }
  70.     void AddRezervacija(){
  71.         if (_brojRezervacija >= 50)  cout << "Nema dovoljno mjesta!";
  72.         else{
  73.             gosti[_brojRezervacija] = new Rezervacija;
  74.             gosti[_brojRezervacija]->Unos();
  75.             _brojRezervacija++;
  76.         }
  77.     }
  78. };
  79. Rezervacija * GetRezervacija(Proslava * p){
  80.     if (p->_brojRezervacija == 0) return NULL;
  81.     cout << crt << "Pretraga rezervacije: " << crt;
  82.     char temp[30];
  83.     cout << "Unesite ime i prezime osobe na koju glasi rezervacija: ";
  84.     cin.getline(temp, 30);
  85.  
  86.     int lokacija = -1;
  87.  
  88.     for (size_t i = 0; i < p->_brojRezervacija; i++){
  89.         if (strcmp(temp, p->gosti[i]->_imePrezime) == 0){
  90.             lokacija = i;
  91.             break;
  92.         }
  93.     }
  94.     if (lokacija == -1){
  95.         cout << "Nije pronadjena rezervacija koja glasi na navedenu osobu." << endl;
  96.         return NULL;
  97.     }
  98.     else return p->gosti[lokacija];
  99. }
  100. void PrikaziDuznike(Proslava * p){
  101.     double visinaDugovanja;
  102.     int br = 0, izbor;
  103.     cout << "Unesite visinu dugovanja po kojoj zelite izvrsiti pretragu: ";
  104.     cin >> visinaDugovanja;
  105.     cin.ignore();
  106.  
  107.     for (int i = 0; i < p->_brojRezervacija; i++){
  108.         double trebaBitiUplaceno = p->gosti[i]->_brojOsoba * 50;
  109.         if (trebaBitiUplaceno>p->gosti[i]->_uplata){
  110.             p->gosti[i]->Ispis();
  111.             br++;
  112.         }
  113.     }
  114.  
  115.     do{
  116.         cout << "Izaberite duznika koji zeli izvrsiti naknadnu uplatu: ";
  117.         cin >> izbor;
  118.         cin.ignore();
  119.     } while (izbor >br || izbor < 0);
  120.  
  121.     p->gosti[izbor]->UplataRezervacije();
  122.  
  123. }
  124. int main(){
  125.    
  126.     Proslava * objekat = new Proslava;
  127.    
  128.     int br;
  129.     cout << "Koliko rezervacija zelite unijeti: ";
  130.     cin >> br;
  131.     cin.ignore();
  132.     objekat->Unos();
  133.     for (int i = 0; i < br; i++)
  134.         objekat->AddRezervacija();
  135.  
  136.     Rezervacija * rez = GetRezervacija(objekat);
  137.     if (rez != NULL) rez->Ispis();
  138.    
  139.     PrikaziDuznike(objekat);
  140.  
  141.  
  142.  
  143.     system("pause > null");
  144.     return 0;
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement