Advertisement
Guest User

opera i balet

a guest
May 21st, 2018
392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.66 KB | None | 0 0
  1. Опера и Балет Problem 5 (0 / 0)
  2. Потребно е да се моделира продажба на карти за прикажување на претстави во некој културен центар. За таа цел, да се направи класа DELO. За класата се чуваат следните атрибути:
  3.  
  4. Име на делото (низа од 50 знаци)
  5. Година кога е напишано (цел број)
  6. Земја на потекло (низа од 50 знаци)
  7. За класата да се направат потребниот конструктор, get и set методи. За класата DELO да се преоптовари операторот == кој ќе споредува дали две дела се исти (две дела се исти ако имаат исто име) (5 поени).
  8.  
  9. Да се дефинира класа PRЕTSTAVA. За класата се чуваат информации за:
  10.  
  11. Делото кое се прикажува (објект од класата DELO)
  12. Број на продадени карти (цел број)
  13. Дата на прикажување (низа од 15 знаци)
  14. За класата да се дефинира потребниот конструктор, set и get методите Дополнително, за класата PRETSTAVA да се напише метода cena која треба да ја врати цената на една карта. (5 поени) Цената зависи од староста на делото и од земјата на потекло и се пресметува по следната формула: Цена = N + М, каде М = 50ден. ако делото е напишано во 20 или 21 век, М = 75ден. ако делото е напишано во 19 век и М = 100ден. ако делото е напишано пред 19 век. N = 100ден ако делото е од Италија, N = 150ден ако делото е од Русија. Делата од останатите земји имаат N = 80ден.
  15.  
  16. Претставите можат да бидат опера и балет. За балетите се чува дополнителен атрибут за цената на балетот која се додава на оригиналната цена на картата и таа вредност е иста за сите балетски претстави. На почеток изнесува 150 денари, со можност да се променува ако така одлучи менаџментот на културниот центар. (10 поени)
  17.  
  18. Да се дефинира надворешна функција prihod која како аргумент прима низа од покажувачи кон претстави кои се прикажале во еден месец и големина на низата, а како резултат треба да го пресмета и врати вкупниот приход на културниот центар. (10 поени)
  19.  
  20. Да се дефинира надворешна функција brojPretstaviNaDelo која како аргумент прима низа од покажувачи кон претстави кои се прикажале во еден месец, големина на низата и едно дело. Оваа функција пресметува на колку од дадените претстави е прикажано даденото дело. (5 поени)
  21.  
  22. _(Напомена: Во низата од претстави која се проследува како аргумент во функциите prihod и brojPretstaviNaDelo може да имаме повеќе претстави за едно исто дело)_
  23.  
  24. Целосна функционалност на задачата (5 поени)
  25.  
  26.  
  27. #include<iostream>
  28. #include<string.h>
  29. using namespace std;
  30.  
  31. //место за вашиот код
  32.  
  33.  
  34. //citanje na delo
  35. Delo readDelo(){
  36. char ime[50];
  37. int godina;
  38. char zemja[50];
  39. cin>>ime>>godina>>zemja;
  40. return Delo(ime,godina,zemja);
  41. }
  42. //citanje na pretstava
  43. Pretstava* readPretstava(){
  44. int tip; //0 za Balet , 1 za Opera
  45. cin>>tip;
  46. Delo d=readDelo();
  47. int brojProdadeni;
  48. char data[15];
  49. cin>>brojProdadeni>>data;
  50. if (tip==0) return new Balet(d,brojProdadeni,data);
  51. else return new Opera(d,brojProdadeni,data);
  52. }
  53. int main(){
  54. int test_case;
  55. cin>>test_case;
  56.  
  57. switch(test_case){
  58. case 1:
  59. //Testiranje na klasite Opera i Balet
  60. {
  61. cout<<"======TEST CASE 1======="<<endl;
  62. Pretstava* p1=readPretstava();
  63. cout<<p1->getDelo().getIme()<<endl;
  64. Pretstava* p2=readPretstava();
  65. cout<<p2->getDelo().getIme()<<endl;
  66. }break;
  67.  
  68. case 2:
  69. //Testiranje na klasite Opera i Balet so cena
  70. {
  71. cout<<"======TEST CASE 2======="<<endl;
  72. Pretstava* p1=readPretstava();
  73. cout<<p1->cena()<<endl;
  74. Pretstava* p2=readPretstava();
  75. cout<<p2->cena()<<endl;
  76. }break;
  77.  
  78. case 3:
  79. //Testiranje na operator ==
  80. {
  81. cout<<"======TEST CASE 3======="<<endl;
  82. Delo f1=readDelo();
  83. Delo f2=readDelo();
  84. Delo f3=readDelo();
  85.  
  86. if (f1==f2) cout<<"Isti se"<<endl; else cout<<"Ne se isti"<<endl;
  87. if (f1==f3) cout<<"Isti se"<<endl; else cout<<"Ne se isti"<<endl;
  88.  
  89. }break;
  90.  
  91. case 4:
  92. //testiranje na funkcijata prihod
  93. {
  94. cout<<"======TEST CASE 4======="<<endl;
  95. int n;
  96. cin>>n;
  97. Pretstava **pole=new Pretstava*[n];
  98. for (int i=0;i<n;i++){
  99. pole[i]=readPretstava();
  100.  
  101. }
  102. cout<<prihod(pole,n);
  103. }break;
  104.  
  105. case 5:
  106. //testiranje na prihod so izmena na cena za 3d proekcii
  107. {
  108. cout<<"======TEST CASE 5======="<<endl;
  109. int cenaBalet;
  110. cin>>cenaBalet;
  111. Balet::setCenaBalet(cenaBalet);
  112. int n;
  113. cin>>n;
  114. Pretstava **pole=new Pretstava*[n];
  115. for (int i=0;i<n;i++){
  116. pole[i]=readPretstava();
  117. }
  118. cout<<prihod(pole,n);
  119. }break;
  120.  
  121. case 6:
  122. //testiranje na brojPretstaviNaDelo
  123. {
  124. cout<<"======TEST CASE 6======="<<endl;
  125. int n;
  126. cin>>n;
  127. Pretstava **pole=new Pretstava*[n];
  128. for (int i=0;i<n;i++){
  129. pole[i]=readPretstava();
  130. }
  131.  
  132. Delo f=readDelo();
  133. cout<<brojPretstaviNaDelo(pole,n,f);
  134. }break;
  135.  
  136. };
  137.  
  138.  
  139. return 0;
  140. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement