Advertisement
BakiR98

Projekcija Rije[enje

Mar 25th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. #include <iostream>
  2. #include<tuple>
  3. const char * crt = "\n-------------------------------------\n";
  4. using namespace std;
  5.  
  6. const int brojRedova = 10; // broj redova je isti u svim salama
  7.  
  8. struct Posjetitelj {
  9. char * _imePrezime;
  10. //pretpostavka je da ce se uvijek unijeti validna oznaka sjedista u formatu A-XX gdje je XX dvocifreni broj, a A predstavlja veliko slovo. Jednocifrene oznake ce imati prefiks 0
  11. char _ozankaSjedista[5]; //npr. A-01, B-17, C-23, -> slovo predstavlja oznaku reda, a broj oznaku kolone
  12. };
  13.  
  14. struct Projekcija{
  15. char * _film;//Leo da Vinci: Mission Mona Lisa
  16. //svaki red ce cuvati informacije o posjetiteljima u tom redu
  17. Posjetitelj * _posjetitelji[brojRedova];
  18. int _brojPosjetiteljaURedu[brojRedova];//cuva informaciju koliko svaki red ima dodatih posjetitelja
  19. /*ako zelite, nacin cuvanja informacije o broju elemenata u pojedinom redu mozete implementirati i na neki drugi nacin npr. postavljajuci neke defaultne vrijednosti atributa objekta*/
  20. int _brojKolonaUSali;//broj kolona mora biti paran >=5 i <=10
  21. };
  22.  
  23. void Dealociraj(Projekcija & projekcija) {
  24. delete[] projekcija._film; projekcija._film = nullptr;
  25. for (size_t i = 0; i < brojRedova; i++) {
  26. for (size_t j = 0; j < projekcija._brojPosjetiteljaURedu[i]; j++) {
  27. delete[] projekcija._posjetitelji[i][j]._imePrezime;
  28. projekcija._posjetitelji[i][j]._imePrezime = nullptr;
  29. }
  30. delete[] projekcija._posjetitelji[i];
  31. projekcija._posjetitelji [i] = nullptr;
  32. }
  33. }
  34.  
  35. int main() {
  36.  
  37. int oznakaR = 0, oznakaK = 0;
  38. Projekcija Leo; //Leo da Vinci: Mission Mona Lisa
  39. //inicijalizuje vrijednosti atributa objekta osvetnici
  40. Unos(Leo, "Leo da Vinci: Mission Mona Lisa", 6);//film, broj_kolona
  41.  
  42. //GetPozicijuUReduIKoloni - na osnovu oznake sjedista vraca pair red i kolona tj. poziciju u matrici
  43. tie(oznakaR, oznakaK) = GetPozicijuUReduIKoloni("B-15");
  44. cout << crt << "GetPozicijuUReduIKoloni(B-15) ->" << oznakaR << "/" << oznakaK << endl;//ispisuje 1/14
  45. tie(oznakaR, oznakaK) = GetPozicijuUReduIKoloni("C-01");
  46. cout << "GetPozicijuUReduIKoloni(C-01) ->" << oznakaR << "/" << oznakaK << crt;//ispisuje 2/0
  47. /*
  48. GetNovogPosjetitelja - vraca objekat (ne pokazivac) tipa Posjetitelj koji je inicijalizovan vrijednostima proslijedjenih parametara
  49. DodajPosjetitelja - podatke o novom posjetitelju dodaje u listu (niz) posjetitelja za odredjenu projekciju.
  50. Onemoguciti dodavanje posjetitelja sa istim imenom i prezimenom, nepostojecom lokacijom sjedista ili u slucaju da su sva mjesta popunjena
  51. */
  52. if (DodajPosjetitelja(Leo, GetNovogPosjetitelja("A-02", "Denis Music")))
  53. cout << crt << "Posjetitelj uspjesno dodan!" << crt;
  54. if (DodajPosjetitelja(Leo, GetNovogPosjetitelja("C-03", "Zanin Vejzovic")))
  55. cout << crt << "Posjetitelj uspjesno dodan!" << crt;
  56. if (DodajPosjetitelja(Leo, GetNovogPosjetitelja("D-05", "Adel Handzic")))
  57. cout << crt << "Posjetitelj uspjesno dodan!" << crt;
  58.  
  59. //PrikaziRasporedSjedenja - na osnovu oznake sjedista prikazuje raspored sjedenja posjetitelja za vrijeme projekcije
  60. PrikaziRasporedSjedenja(Leo);
  61.  
  62. /*
  63. DODATNO:
  64. 1. prilikom ispisa, sirinu kolone prilagoditi maksimalnom broju karaktera u imenu i prezimenu posjetioca
  65. 2. automatski generisati oznaku sjedista na osnovu prvog slobodnog mjesta na projekciji. ovu funkciju nije potrebno integrisati u postojece rjesenje, vec se moze i zasebno testirati
  66. */
  67.  
  68. Dealociraj(Leo);
  69.  
  70. system("pause>0");
  71. return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement