Advertisement
Guest User

Untitled

a guest
Sep 19th, 2019
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.86 KB | None | 0 0
  1. #include<iostream>
  2. #include<string.h>
  3. using namespace std;
  4.  
  5. //место за вашиот код
  6. class Delo{
  7. private:
  8. char ime[50];
  9. int godina;
  10. char zemjaPoteklo[50];
  11. public:
  12. Delo(char *ime = "",int godina = 0,char *zemjaPoteklo = ""){
  13. strcpy(this->ime,ime);
  14. this->godina = godina;
  15. strcpy(this->zemjaPoteklo,zemjaPoteklo);
  16. }
  17. int getGodina(){
  18. return godina;
  19. }
  20. char *getIme(){
  21. return ime;
  22. }
  23. char *getZemja(){
  24. return zemjaPoteklo;
  25. }
  26. void setIme(char *ime){
  27. strcpy(this->ime,ime);
  28. }
  29. void setGodina(int godina){
  30. this->godina = godina;
  31. }
  32. void setZemja(char *zemja){
  33. strcpy(this->zemjaPoteklo,zemja);
  34. }
  35. bool operator == (Delo &d){
  36. if(strcmp(ime,d.ime) == 0){
  37. return true;
  38. }
  39. return false;
  40. }
  41. };
  42. class Pretstava{
  43. protected:
  44. Delo d;
  45. int brojProdadeniKarti;
  46. char data[15];
  47. public:
  48. Pretstava(Delo d,int brojProdadeniKarti,char *data){
  49. this->d = d;
  50. this->brojProdadeniKarti = brojProdadeniKarti;
  51. strcpy(this->data,data);
  52. }
  53. int getKarti(){
  54. return brojProdadeniKarti;
  55. }
  56. char *getData(){
  57. return data;
  58. }
  59. void setBroj(int brojProdadeniKarti){
  60. this->brojProdadeniKarti = brojProdadeniKarti;
  61. }
  62. void setData(char *data){
  63. strcpy(this->data,data);
  64. }
  65. Delo getDelo(){
  66. return d;
  67. }
  68. virtual int cena(){
  69. int N = 0;
  70. int M = 0;
  71. int flag = 0;
  72. if(flag == 0){
  73. if(d.getGodina() > 1899){
  74. M = 50;
  75. }
  76. else if(d.getGodina() < 1899&&d.getGodina() > 1799){
  77. M = 75;
  78. }
  79. else if(d.getGodina() < 1799){
  80. M = 100;
  81. }
  82. flag = 1;
  83. }
  84. if(flag == 1){
  85. if(strcmp(d.getZemja(),"Italija") == 0){
  86. N = 100;
  87. }
  88. else if(strcmp(d.getZemja(),"Rusija") == 0){
  89. N = 150;
  90. }
  91. else if(strcmp(d.getZemja(),"Rusija") != 0&&strcmp(d.getZemja(),"Italija") != 0){
  92. N = 80;
  93. }
  94. }
  95. return M + N;
  96. }
  97. };
  98. class Balet:public Pretstava{
  99. public:
  100. int static osCena;
  101. Balet(Delo d,int brojProdadeniKarti,char *data):Pretstava(d,brojProdadeniKarti,data){}
  102. void static setCenaBalet(int newCena){
  103. osCena = newCena;
  104. }
  105. int cena(){
  106. return Pretstava::cena() + osCena;
  107. }
  108. };
  109. int Balet::osCena = 150;
  110. class Opera:public Pretstava{
  111. public:
  112. Opera(Delo d,int brojProdadeniKarti,char *data):Pretstava(d,brojProdadeniKarti,data){}
  113. int cena(){
  114. return Pretstava::cena();
  115. }
  116. };
  117.  
  118. int prihod(Pretstava **pretstavi,int brojPretstavi){
  119. int vkupenPrihod = 0;
  120. for(int i = 0;i < brojPretstavi;i++){
  121. vkupenPrihod = vkupenPrihod + pretstavi[i]->cena() * pretstavi[i]->getKarti();
  122. }
  123. return vkupenPrihod;
  124. }
  125. int brojPretstaviNaDelo(Pretstava **pretstavi,int brojPretstavi,Delo &d){
  126. int brojac = 0;
  127. for(int i = 0;i < brojPretstavi;i++){
  128. if(pretstavi[i]->getDelo() == d){
  129. brojac++;
  130. }
  131. }
  132. return brojac;
  133. }
  134. //citanje na delo
  135. Delo readDelo(){
  136. char ime[50];
  137. int godina;
  138. char zemja[50];
  139. cin>>ime>>godina>>zemja;
  140. return Delo(ime,godina,zemja);
  141. }
  142. //citanje na pretstava
  143. Pretstava* readPretstava(){
  144. int tip; //0 za Balet , 1 za Opera
  145. cin>>tip;
  146. Delo d=readDelo();
  147. int brojProdadeni;
  148. char data[15];
  149. cin>>brojProdadeni>>data;
  150. if (tip==0) return new Balet(d,brojProdadeni,data);
  151. else return new Opera(d,brojProdadeni,data);
  152. }
  153. int main(){
  154. int test_case;
  155. cin>>test_case;
  156.  
  157. switch(test_case){
  158. case 1:
  159. //Testiranje na klasite Opera i Balet
  160. {
  161. cout<<"======TEST CASE 1======="<<endl;
  162. Pretstava* p1=readPretstava();
  163. cout<<p1->getDelo().getIme()<<endl;
  164. Pretstava* p2=readPretstava();
  165. cout<<p2->getDelo().getIme()<<endl;
  166. }break;
  167.  
  168. case 2:
  169. //Testiranje na klasite Opera i Balet so cena
  170. {
  171. cout<<"======TEST CASE 2======="<<endl;
  172. Pretstava* p1=readPretstava();
  173. cout<<p1->cena()<<endl;
  174. Pretstava* p2=readPretstava();
  175. cout<<p2->cena()<<endl;
  176. }break;
  177.  
  178. case 3:
  179. //Testiranje na operator ==
  180. {
  181. cout<<"======TEST CASE 3======="<<endl;
  182. Delo f1=readDelo();
  183. Delo f2=readDelo();
  184. Delo f3=readDelo();
  185.  
  186. if (f1==f2) cout<<"Isti se"<<endl; else cout<<"Ne se isti"<<endl;
  187. if (f1==f3) cout<<"Isti se"<<endl; else cout<<"Ne se isti"<<endl;
  188.  
  189. }break;
  190.  
  191. case 4:
  192. //testiranje na funkcijata prihod
  193. {
  194. cout<<"======TEST CASE 4======="<<endl;
  195. int n;
  196. cin>>n;
  197. Pretstava **pole=new Pretstava*[n];
  198. for (int i=0;i<n;i++){
  199. pole[i]=readPretstava();
  200.  
  201. }
  202. cout<<prihod(pole,n);
  203. }break;
  204.  
  205. case 5:
  206. //testiranje na prihod so izmena na cena za 3d proekcii
  207. {
  208. cout<<"======TEST CASE 5======="<<endl;
  209. int cenaBalet;
  210. cin>>cenaBalet;
  211. Balet::setCenaBalet(cenaBalet);
  212. int n;
  213. cin>>n;
  214. Pretstava **pole=new Pretstava*[n];
  215. for (int i=0;i<n;i++){
  216. pole[i]=readPretstava();
  217. }
  218. cout<<prihod(pole,n);
  219. }break;
  220.  
  221. case 6:
  222. //testiranje na brojPretstaviNaDelo
  223. {
  224. cout<<"======TEST CASE 6======="<<endl;
  225. int n;
  226. cin>>n;
  227. Pretstava **pole=new Pretstava*[n];
  228. for (int i=0;i<n;i++){
  229. pole[i]=readPretstava();
  230. }
  231.  
  232. Delo f=readDelo();
  233. cout<<brojPretstaviNaDelo(pole,n,f);
  234. }break;
  235.  
  236. };
  237.  
  238.  
  239. return 0;
  240. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement