Advertisement
ProjcheskiF1

CD-OOP

Jan 5th, 2017
504
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. enum tip {pop,rap,rok };
  5. class Pesna {
  6. private:
  7. char *ime;
  8. int minuti;
  9. tip muzika;
  10. public:
  11. Pesna () {}
  12. Pesna (char *i,int m,tip muz) {
  13. ime=new char [strlen(i)+1];
  14. strcpy(ime,i);
  15. minuti=m;
  16. muzika=muz;
  17. }
  18. void pecati() {
  19. cout<<"\""<<ime<<"\""<<"-"<<minuti<<"min"<<endl;
  20. }
  21. int getmin ()
  22. {
  23. return minuti;
  24. }
  25. tip getTip()
  26. {
  27. return muzika;
  28. }
  29. };
  30. class CD {
  31. private:
  32. Pesna pesni[10];
  33. int n;
  34. int max;
  35. public:
  36.  
  37. CD(Pesna *pesni=0, int n=0, int max=0){
  38. this->pesni=new Pesna[10+1];
  39. for(int i=0;i<10;i++){
  40. this->pesni[i]=pesni[i];
  41.  
  42. }
  43. this->n=n;
  44. this->max=max;
  45.  
  46. }
  47. CD & dodadiPesna (Pesna p)
  48. {
  49. ++n;
  50. int temp=0;
  51. for(int i=0; i<n-1; i++)
  52. {
  53. temp+=pesni[i].getmin();
  54. }
  55. if(n>10 || max<(temp+p.getmin()))
  56. {
  57. --n;
  58. return *this;
  59. }
  60. pesni[n-1]=p;
  61. return *this;
  62. }
  63. Pesna & getPesna (int k)
  64. {
  65. return pesni[k];
  66. }
  67. int getBroj ()
  68. {
  69. return n;
  70. }
  71. void pecatiPesniPoTip(tip t)
  72. {
  73. for(int i=0; i<n; i++)
  74. {
  75. if(pesni[i].getTip()==t)
  76. pesni[i].pecati();
  77. }
  78.  
  79. }
  80. };
  81. int main() {
  82. // se testira zadacata modularno
  83. int testCase;
  84. cin >> testCase;
  85.  
  86. int n, minuti, kojtip;
  87. char ime[50];
  88.  
  89. if(testCase == 1) {
  90. cout << "===== Testiranje na klasata Pesna ======" << endl;
  91. cin >> ime;
  92. cin >> minuti;
  93. cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  94. Pesna p(ime,minuti,(tip)kojtip);
  95. p.pecati();
  96. } else if(testCase == 2) {
  97. cout << "===== Testiranje na klasata CD ======" << endl;
  98. CD omileno(20);
  99. cin>>n;
  100. for (int i=0; i<n; i++) {
  101. cin >> ime;
  102. cin >> minuti;
  103. cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  104. Pesna p(ime,minuti,(tip)kojtip);
  105. omileno.dodadiPesna(p);
  106. }
  107. for (int i=0; i<n; i++)
  108. (omileno.getPesna(i)).pecati();
  109. } else if(testCase == 3) {
  110. cout << "===== Testiranje na metodot dodadiPesna() od klasata CD ======" << endl;
  111. CD omileno(20);
  112. cin>>n;
  113. for (int i=0; i<n; i++) {
  114. cin >> ime;
  115. cin >> minuti;
  116. cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  117. Pesna p(ime,minuti,(tip)kojtip);
  118. omileno.dodadiPesna(p);
  119. }
  120. for (int i=0; i<omileno.getBroj(); i++)
  121. (omileno.getPesna(i)).pecati();
  122. } else if(testCase == 4) {
  123. cout << "===== Testiranje na metodot pecatiPesniPoTip() od klasata CD ======" << endl;
  124. CD omileno(20);
  125. cin>>n;
  126. for (int i=0; i<n; i++) {
  127. cin >> ime;
  128. cin >> minuti;
  129. cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  130. Pesna p(ime,minuti,(tip)kojtip);
  131. omileno.dodadiPesna(p);
  132. }
  133. cin>>kojtip;
  134. omileno.pecatiPesniPoTip((tip)kojtip);
  135.  
  136. } else if(testCase == 5) {
  137. cout << "===== Testiranje na metodot pecatiPesniPoTip() od klasata CD ======" << endl;
  138. CD omileno(20);
  139. cin>>n;
  140. for (int i=0; i<n; i++) {
  141. cin >> ime;
  142. cin >> minuti;
  143. cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  144. Pesna p(ime,minuti,(tip)kojtip);
  145. omileno.dodadiPesna(p);
  146. }
  147. cin>>kojtip;
  148. omileno.pecatiPesniPoTip((tip)kojtip);
  149.  
  150. }
  151.  
  152. return 0;
  153. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement