Advertisement
Guest User

OperaBalet

a guest
May 21st, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.35 KB | None | 0 0
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4.  
  5. class Delo{
  6. protected:
  7. char ime[50];
  8. int godina;
  9. char zemja[50];
  10. public:
  11. Delo(char *i,int g,char *z)
  12. {
  13. strcpy(ime,i);
  14. godina=g;
  15. strcpy(zemja,z);
  16. }
  17. char* getIme()
  18. {
  19. return ime;
  20. }
  21. bool operator==(const Delo &d)
  22. {
  23. if(!strcmp(ime,d.ime)) return true;
  24. return false;
  25. }
  26. };
  27. class Pretstava:public Delo{
  28. protected:
  29. int broj;
  30. char datum[15];
  31. public:
  32. Pretstava(Delo &d,int b,char *da):Delo(d)
  33. {
  34. broj=b;
  35. strcpy(datum,da);
  36. }
  37. Delo getDelo()
  38. {
  39. return Delo(ime,godina,zemja);
  40. }
  41. int getBroj()
  42. {
  43. return broj;
  44. }
  45. virtual int cena()
  46. {
  47. int M,N;
  48. if(godina>=1900&&godina<2100) M=50;
  49. else if(godina>=1800) M=75;
  50. else M=100;
  51. if(!strcmp("Italija",zemja)) N=100;
  52. else if(!strcmp("Rusija",zemja)) N=150;
  53. else N=80;
  54. return M+N;
  55. }
  56. };
  57. class Balet:public Pretstava{
  58. protected:
  59. static int CENA;
  60. public:
  61. Balet(Delo &d,int b,char *da):Pretstava(d,b,da)
  62. {
  63.  
  64. }
  65. int cena()
  66. {
  67. int pom=Pretstava::cena();
  68. pom+=CENA;
  69. return pom;
  70. }
  71. static void setCenaBalet(int t)
  72. {
  73. CENA=t;
  74. }
  75. };
  76. int Balet::CENA=150;
  77.  
  78. class Opera:public Pretstava{
  79. public:
  80. };
  81. int prihod(Pretstava **pr,int g)
  82. {
  83. int suma=0;
  84. for(int i=0;i<g;i++)
  85. {
  86. suma+=pr[i]->cena()*pr[i]->getBroj();
  87. }
  88. return suma;
  89. }
  90. int brojPretstaviNaDelo(Pretstava **pr,int g,Delo &d)
  91. {
  92. int counter=0;
  93. for(int i=0;i<g;i++)
  94. {
  95. if(pr[i]->getDelo()==d) counter++;
  96. }
  97. return counter;
  98. }
  99. //citanje na delo
  100. Delo readDelo(){
  101. char ime[50];
  102. int godina;
  103. char zemja[50];
  104. cin>>ime>>godina>>zemja;
  105. return Delo(ime,godina,zemja);
  106. }
  107. //citanje na pretstava
  108. Pretstava* readPretstava(){
  109. int tip; //0 za Balet , 1 za Opera
  110. cin>>tip;
  111. Delo d=readDelo();
  112. int brojProdadeni;
  113. char data[15];
  114. cin>>brojProdadeni>>data;
  115. if (tip==0) return new Balet(d,brojProdadeni,data);
  116. else return new Opera(d,brojProdadeni,data);
  117. }
  118. int main(){
  119. int test_case;
  120. cin>>test_case;
  121.  
  122. switch(test_case){
  123. case 1:
  124. //Testiranje na klasite Opera i Balet
  125. {
  126. cout<<"======TEST CASE 1======="<<endl;
  127. Pretstava* p1=readPretstava();
  128. cout<<p1->getDelo().getIme()<<endl;
  129. Pretstava* p2=readPretstava();
  130. cout<<p2->getDelo().getIme()<<endl;
  131. }break;
  132.  
  133. case 2:
  134. //Testiranje na klasite Opera i Balet so cena
  135. {
  136. cout<<"======TEST CASE 2======="<<endl;
  137. Pretstava* p1=readPretstava();
  138. cout<<p1->cena()<<endl;
  139. Pretstava* p2=readPretstava();
  140. cout<<p2->cena()<<endl;
  141. }break;
  142.  
  143. case 3:
  144. //Testiranje na operator ==
  145. {
  146. cout<<"======TEST CASE 3======="<<endl;
  147. Delo f1=readDelo();
  148. Delo f2=readDelo();
  149. Delo f3=readDelo();
  150.  
  151. if (f1==f2) cout<<"Isti se"<<endl; else cout<<"Ne se isti"<<endl;
  152. if (f1==f3) cout<<"Isti se"<<endl; else cout<<"Ne se isti"<<endl;
  153.  
  154. }break;
  155.  
  156. case 4:
  157. //testiranje na funkcijata prihod
  158. {
  159. cout<<"======TEST CASE 4======="<<endl;
  160. int n;
  161. cin>>n;
  162. Pretstava **pole=new Pretstava*[n];
  163. for (int i=0;i<n;i++){
  164. pole[i]=readPretstava();
  165.  
  166. }
  167. cout<<prihod(pole,n);
  168. }break;
  169.  
  170. case 5:
  171. //testiranje na prihod so izmena na cena za 3d proekcii
  172. {
  173. cout<<"======TEST CASE 5======="<<endl;
  174. int cenaBalet;
  175. cin>>cenaBalet;
  176. Balet::setCenaBalet(cenaBalet);
  177. int n;
  178. cin>>n;
  179. Pretstava **pole=new Pretstava*[n];
  180. for (int i=0;i<n;i++){
  181. pole[i]=readPretstava();
  182. }
  183. cout<<prihod(pole,n);
  184. }break;
  185.  
  186. case 6:
  187. //testiranje na brojPretstaviNaDelo
  188. {
  189. cout<<"======TEST CASE 6======="<<endl;
  190. int n;
  191. cin>>n;
  192. Pretstava **pole=new Pretstava*[n];
  193. for (int i=0;i<n;i++){
  194. pole[i]=readPretstava();
  195. }
  196.  
  197. Delo f=readDelo();
  198. cout<<brojPretstaviNaDelo(pole,n,f);
  199. }break;
  200.  
  201. };
  202.  
  203.  
  204. return 0;
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement