Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.02 KB | None | 0 0
  1. #include<iostream>
  2. #include<iomanip>
  3. using namespace std;
  4.  
  5. struct MarkaVozila
  6. {
  7. char Naziv[12];
  8. };
  9. int const CarMan = 10; // Car Manifact.
  10. MarkaVozila proizvodjaci[CarMan] = { "VolksWagen", "Mercedes", "Renault", "Opel", "Hyundai", "Volvo", "Audi", "Citroen", "BMW", "Peugeot" };
  11.  
  12. struct Vozilo
  13. {
  14. MarkaVozila Marka;
  15. int GodinaProizvodnje;
  16. int Kubikaza;
  17. char VrstaGoriva; // D=Dizel, B=Benzin
  18. char Status = 'S'; // R=Rezervisan, P=Prodat, S=Slobodan
  19. float cijena;
  20. };
  21.  
  22. struct parking
  23. {
  24. Vozilo vozilo;
  25. int ParkingMjestoBr;
  26. char Status = 'S'; // P=Popunjeno, S=Slobodno
  27. };
  28.  
  29. MarkaVozila OdaberiProizvodjaca()
  30. {
  31. // Dovrsi funkciju !
  32. // vraca odabranu marku vozila iz globalnog niza (proizvodjaci[])
  33. MarkaVozila v;
  34. for (int i = 0; i < CarMan; i++)
  35. {
  36. cout << i + 1 << ". ";
  37. cout << v.Naziv[i] << endl;
  38. }
  39.  
  40. cin.getline(v.Naziv, 12);
  41. return v;
  42. }
  43.  
  44. Vozilo NovoVozilo()
  45. {
  46. Vozilo v;
  47. v.Marka = OdaberiProizvodjaca();
  48. cout << "Godina proizvodnje: ";
  49. cin >> v.GodinaProizvodnje;
  50. cout << "Kubikaza: ";
  51. cin >> v.Kubikaza;
  52. cout << "Gorivo B/D: ";
  53. cin >> v.VrstaGoriva;
  54. cout << "Cijena: ";
  55. cin >> v.cijena;
  56. return v;
  57. }
  58.  
  59. void VoziloInfo(Vozilo v)
  60. {
  61. // Dovrsi funkciju !
  62. // Prikazuje informacije o vozilu
  63. cout << v.Marka.Naziv << " / ";
  64. cout << v.VrstaGoriva << " / ";
  65. cout << v.GodinaProizvodnje << " / ";
  66. cout << v.Kubikaza << " / ";
  67. cout << v.cijena << " / ";
  68. cout << v.Status << endl;
  69. }
  70.  
  71. void ParkingInfo(parking p[], int BrojMjesta)
  72. {
  73. // Dovrsi funkciju !
  74. // Prikazuje kompletan parking
  75.  
  76. for (int i = 0; i < BrojMjesta; i++)
  77. {
  78. cout << i + 1 << ". ";
  79. VoziloInfo(p[i].vozilo);
  80. }
  81. }
  82.  
  83. float VrijednostParkinga(parking p[], int vozila)
  84. {
  85. // Dovrsi funkciju !
  86. // Rekurzivna funkcija, sabire vrijednost parkiranih vozila
  87.  
  88. if (vozila == 0)
  89. return 0;
  90.  
  91. float suma = 0;
  92. suma += p[vozila-1].vozilo.cijena;
  93.  
  94. return suma + VrijednostParkinga(p, vozila-1);
  95. }
  96.  
  97. void PromjenaStatusaVozila(Vozilo& v)
  98. {
  99. // Dovrsi funkciju !
  100. // omogucuje izmjenu statusa odabranog vozila
  101. // (P)-Prodat, (R)-Rezervisan, (S)-Slobodan
  102.  
  103. char odabir;
  104. cout << "Odaberite status vozila (S/P/R) ili '*' za sve" << endl;
  105. cin >> odabir;
  106.  
  107. switch (odabir)
  108. {
  109. case 'S':
  110. {
  111.  
  112. if (v.Status == 'S')
  113. VoziloInfo(v);
  114.  
  115. break;
  116. }
  117. case 'P':
  118. {
  119. if (v.Status == 'P')
  120. VoziloInfo(v);
  121. break;
  122.  
  123. }
  124. case 'R':
  125. {
  126. if (v.Status == 'R')
  127. VoziloInfo(v);
  128. break;
  129.  
  130. }
  131. case '*':
  132. {
  133. VoziloInfo(v);
  134. break;
  135.  
  136. }
  137. default:
  138. break;
  139. }
  140.  
  141.  
  142.  
  143.  
  144.  
  145. }
  146.  
  147. void ListaVozila(parking p[], int mjesta)
  148. {
  149. // Dovrsi funkciju !
  150. // prikazuje listu vozila koja se nalaze na parkingu
  151. char odabir;
  152. cout << "Odaberite status vozila (S/P/R) ili '*' za sve" << endl;
  153. cin >> odabir;
  154.  
  155. switch (odabir)
  156. {
  157. case 'S':
  158. {
  159. for (int i = 0; i < mjesta; i++)
  160. {
  161. if (p[i].vozilo.Status == 'S')
  162.  
  163. VoziloInfo(p[i].vozilo);
  164.  
  165. }
  166. break;
  167. }
  168. case 'P':
  169. {
  170. for (int i = 0; i < mjesta; i++)
  171. {
  172. if (p[i].vozilo.Status == 'P')
  173.  
  174. VoziloInfo(p[i].vozilo);
  175.  
  176. }
  177. break;
  178.  
  179. }
  180. case 'R':
  181. {
  182. for (int i = 0; i < mjesta; i++)
  183. {
  184. if (p[i].vozilo.Status == 'R')
  185.  
  186. VoziloInfo(p[i].vozilo);
  187.  
  188. }
  189. break;
  190.  
  191. }
  192. case '*':
  193. {
  194. for (int i = 0; i < mjesta; i++)
  195. {
  196. cout << i + 1 << ". ";
  197. VoziloInfo(p[i].vozilo);
  198. }
  199. break;
  200.  
  201. }
  202. default:
  203. break;
  204. }
  205. }
  206.  
  207. Vozilo& OdaberiVozilo(parking p[], int mjesta)
  208. {
  209. // Dovrsi funkciju !
  210. // vraca odabrano vozilo sa parkinga
  211.  
  212. for (int i = 0; i < mjesta; i++)
  213. {
  214. cin >> p[i].ParkingMjestoBr;
  215. }
  216.  
  217. return p->vozilo;
  218. }
  219.  
  220. void pauza()
  221. {
  222. cout << "\nPritisnite taster za nastavak..." << endl;
  223. system("pause>nul");
  224. }
  225.  
  226. int main()
  227. {
  228. int const ParkingMjesta = 10;
  229. parking VozniPark[ParkingMjesta] = {
  230. // Testni podaci
  231. { {proizvodjaci[0], 2000, 1900, 'D', 'S', 5000 }, 1, 'P' },
  232. { {proizvodjaci[3], 2010, 2100, 'D', 'P', 13000}, 2, 'P' },
  233. { {proizvodjaci[1], 2013, 1800, 'B', 'R', 18000}, 3, 'P' },
  234. { {proizvodjaci[7], 2007, 1700, 'D', 'S', 9000 }, 4, 'P' },
  235. { {proizvodjaci[4], 2016, 1600, 'B', 'S', 21000}, 5, 'P' },
  236. { {proizvodjaci[3], 2001, 1900, 'D', 'S', 4000 }, 6, 'P' },
  237. { {proizvodjaci[1], 2006, 2200, 'D', 'R', 11000}, 7, 'P' },
  238. { {proizvodjaci[6], 2017, 2000, 'B', 'S', 26000}, 8, 'P' },
  239. { {proizvodjaci[9], 2008, 1300, 'B', 'S', 12000}, 9, 'P' },
  240. { {proizvodjaci[5], 2003, 1900, 'D', 'S', 7000 }, 10, 'P' }
  241. };
  242.  
  243. int izbor;
  244. do
  245. {
  246. system("cls");
  247. cout << "1. Stanje Parkinga" << endl;
  248. cout << "2. Dodaj vozilo na parking" << endl;
  249. cout << "3. Promjena statusa vozila" << endl;
  250. cout << "4. Lista vozila" << endl;
  251. cout << "5. Vrijednost vozila na parkingu" << endl;
  252. cout << "6. Ukloni vozilo sa parkinga" << endl;
  253. cout << "0. IZLAZ" << endl;
  254. cout << "\nIzbor:";
  255. cin >> izbor;
  256.  
  257. switch (izbor)
  258. {
  259. case 1:
  260. {
  261. ParkingInfo(VozniPark, ParkingMjesta);
  262. pauza();
  263. break;
  264. }
  265. case 2:
  266. {
  267. bool dodano = false;
  268. for (int i = 0; i < ParkingMjesta; i++)
  269. {
  270. if (VozniPark[i].Status == 'S')
  271. {
  272. VozniPark[i].vozilo = NovoVozilo();
  273. VozniPark[i].Status = 'P';
  274. dodano = true;
  275. break;
  276. }
  277. }
  278. if (dodano == false) cout << "\nNema slobodnih parking mjesta !" << endl;
  279. else cout << "\nVozilo uspjesno dodano na parking." << endl;
  280. pauza();
  281. break;
  282. }
  283. /*case 3:
  284. {
  285. Vozilo& v = OdaberiVozilo(VozniPark, ParkingMjesta);
  286. PromjenaStatusaVozila(v);
  287. break;
  288. }*/
  289. case 4:
  290. {
  291. ListaVozila(VozniPark, ParkingMjesta);
  292. pauza();
  293. break;
  294. }
  295. case 5:
  296. {
  297. cout << "\nUkupna vrijednost parkiranih vozila iznosi: " << VrijednostParkinga(VozniPark, ParkingMjesta) << "KM" << endl;
  298. pauza();
  299. break;
  300. }
  301. case 6:
  302. {
  303. ListaVozila(VozniPark, ParkingMjesta);
  304. cout << "\nKoje parking mjesto oslobadjate: ";
  305. int pm;
  306. cin >> pm;
  307. VozniPark[pm - 1].Status = 'S';
  308. break;
  309. }
  310. default:
  311. break;
  312. }
  313.  
  314. } while (izbor != 0);
  315.  
  316. cout << "\nHvala na koristenju programa." << endl;
  317. cout << endl;
  318. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement