chasnasestra

CD

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