Advertisement
BakiR98

Parcijalni 3

Mar 25th, 2019
124
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.18 KB | None | 0 0
  1. #include <iostream>
  2. #include<tuple>
  3. const char * crt = "\n-------------------------------------\n";
  4.  
  5. using namespace std;
  6.  
  7. struct Putnik {
  8. char * _imePrezime;
  9. //pretpostavka je da ce se uvijek unijeti validna oznaka sjedista u formatu XXA gdje je XX dvocifreni broj, a A predstavlja veliko slovo. Jednocifrene oznake ce imati prefiks 0
  10. char _ozankaSjedista[4]; //npr. 02A, 12B, 14B, 28C -> broj predstavlja oznaku reda, a slovo oznaku kolone
  11. };
  12.  
  13. struct Let{
  14. char * _relacija;//Mostar -> Sarajevo
  15. Putnik * _putnici;
  16. int _trenutnoPutnika;
  17. int _brojRedovaUAvionu;
  18. int _brojKolonaUAvionu;//broj kolona mora biti paran >=4 i <=10
  19. };
  20.  
  21. void Dealociraj(Let & let) {
  22. delete[] let._relacija; let._relacija = nullptr;
  23. for (size_t i = 0; i < let._trenutnoPutnika; i++){
  24. delete[] let._putnici[i]._imePrezime;
  25. let._putnici[i]._imePrezime = nullptr;
  26. }
  27. delete[] let._putnici;
  28. let._putnici = nullptr;
  29. }
  30.  
  31. int main(){
  32. int oznakaR = 0, oznakaK = 0;
  33. Let mostar_sarajevo;
  34. //inicijalizuje vrijednosti atributa objekta mostar_sarajevo
  35. Unos(mostar_sarajevo, "Mostar -> Sarajevo", 10, 4);//relacija, broj_redova, broj_kolona
  36.  
  37. //GetPozicijuUReduIKoloni - na osnovu oznake sjedista vraca pair red i kolona tj. poziciju u matrici
  38. tie(oznakaR, oznakaK) = GetPozicijuUReduIKoloni("15B");
  39. cout <<crt<<"GetPozicijuUReduIKoloni(15B) ->" << oznakaR << "/" << oznakaK << endl;//ispisuje 14/1
  40. tie(oznakaR, oznakaK) = GetPozicijuUReduIKoloni("01B");
  41. cout << "GetPozicijuUReduIKoloni(01B) ->" << oznakaR << "/" << oznakaK << crt;//ispisuje 0/1
  42. /*
  43. GetNovogPutnika - vraca objekat (ne pokazivac) tipa Putnik koji je inicijalizovan vrijednsotima proslijedjenih parametara
  44. DodajPutnika - podatke o novom putniku dodaje u listu (niz) putnika na proslijedjenom letu. Onemoguciti dodavanje putnika sa istim imenom i prezimenom,
  45. nepostojecom lokacijom sjedista ili u slucaju da su sva mjesta popunjena
  46. */
  47. if (DodajPutnika(mostar_sarajevo, GetNovogPutnika("01A", "Denis Music")))
  48. cout <<crt<< "Putnik uspjesno dodan!" << crt;
  49. if(DodajPutnika(mostar_sarajevo, GetNovogPutnika("07C", "Zanin Vejzovic")))
  50. cout << crt << "Putnik uspjesno dodan!" << crt;
  51. if (DodajPutnika(mostar_sarajevo, GetNovogPutnika("10D", "Adel Handzic")))
  52. cout << crt << "Putnik uspjesno dodan!" << crt;
  53. //PrikaziRasporedSjedenja - na osnovu oznake sjedista prikazuje raspored sjedenja u avionu za let koji je proslijedjen kao parametar
  54. PrikaziRasporedSjedenja(mostar_sarajevo);
  55.  
  56. //rekBrojacKaraktera - rekurzivna funkcija koja vraca maksimalan broj karaktera u imenu i prezimenu putnika na odredjenom letu
  57. cout << crt << "Maksimalna broj karaktera u imenu i prezimenu putnika je -> " << rekBrojacKaraktera(mostar_sarajevo,
  58. mostar_sarajevo._trenutnoPutnika, 0) << crt; //broj 0 je pocetno stanje prilikom brojanja max karaktera
  59.  
  60. /*
  61. DODATNO:
  62. 1. prilikom ispisa, sirinu kolone prilagoditi maksimalnom broju karaktera u imenu i prezimenu
  63. 2. automatski generisati oznaku sjedista na osnovu narednog slobodnog mjesta na letu (povratnom vrijednoscu sugerisati na slucaj u kome su sva mjesta na letu vec zauzeta). ovu funkciju nije potrebno integrisati u postojece rjesenje, vec se moze i zasebno testirati
  64. */
  65.  
  66. Dealociraj(mostar_sarajevo);
  67. system("pause>0");
  68. return 0;
  69. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement