Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.06 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3.  
  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 kojtip;
  13. public:
  14. Pesna () {
  15. this->ime= new char [0];
  16. }
  17. Pesna (char* ime, int minuti, tip kojtip) {
  18. this->ime=new char[strlen(ime)+1];
  19. strcpy(this->ime,ime);
  20. this->minuti=minuti;
  21. this->kojtip=kojtip;
  22. }
  23. ~Pesna () {
  24. delete[] ime;
  25. }
  26. Pesna (const Pesna &p) {
  27. ime=new char[strlen(p.ime)+1];
  28. strcpy(ime,p.ime);
  29. minuti=p.minuti;
  30. kojtip=p.kojtip;
  31. }
  32. Pesna& operator=(const Pesna &p) {
  33. if (this!=&p) {
  34. delete[] ime;
  35. ime=new char[strlen(p.ime)+1];
  36. strcpy(ime,p.ime);
  37. minuti=p.minuti;
  38. kojtip=p.kojtip;
  39. }
  40. return *this;
  41. }
  42. void pecati() {
  43. cout<<"\""<<ime<<"\"-"<<minuti<<"min"<<endl;
  44. }
  45. const int get_minuti () {
  46. return minuti;
  47. }
  48. const tip get_tip () {
  49. return kojtip;
  50. }
  51. };
  52.  
  53. class CD {
  54. private:
  55. Pesna* niza;
  56. int brPesni;
  57. int maxvreme;
  58. public:
  59. CD (int maxvreme) {
  60. this->brPesni=0;
  61. this->maxvreme = maxvreme;
  62. }
  63. CD (const CD &c) {
  64. brPesni=c.brPesni;
  65. niza = new Pesna [brPesni];
  66. for (int i=0;i<c.brPesni;i++) {
  67. niza[i] = c.niza[i];
  68. }
  69. maxvreme=c.maxvreme;
  70. }
  71. CD& operator= (const CD &c) {
  72. if (this!=&c) {
  73. delete[] niza;
  74. brPesni=c.brPesni;
  75. niza = new Pesna [brPesni];
  76. for (int i=0;i<c.brPesni;i++) {
  77. niza[i] = c.niza[i];
  78. }
  79. maxvreme=c.maxvreme;
  80. }
  81. return *this;
  82. }
  83. ~CD () {
  84. delete[] niza;
  85. }
  86. Pesna getPesna (int i) {
  87. return niza[i];
  88. }
  89. void pecatiPesniPoTip (tip t) {
  90. for (int i=0;i<brPesni;i++) {
  91. if (niza[i].get_tip()==t) {
  92. niza[i].pecati();
  93. }
  94. }
  95. }
  96. /*int vremetraenje () {
  97. int vkupno=0;
  98. for (int i=0;i<brPesni;i++) {
  99. vkupno+=niza[i].get_minuti();
  100. }
  101. return vkupno;
  102. } */
  103. void dodadiPesna (Pesna p) {
  104. if (brPesni < 10) {
  105. int kapacitet=0;
  106. for (int i=0;i<brPesni;i++)
  107. {
  108. kapacitet+=niza[i].get_minuti();
  109. }
  110. if (kapacitet + p.get_minuti() < maxvreme) {
  111. // cout << "ASD";
  112. Pesna* tmp = new Pesna [brPesni+1];
  113. // cout << "ASD";
  114. tmp[brPesni] = p;
  115. for (int i = 0; i < brPesni; i++)
  116. {
  117. tmp[i] = niza[i];
  118. }
  119. brPesni++;
  120. niza = tmp;
  121.  
  122.  
  123. }
  124. }
  125. }
  126. int getBroj () {
  127. return brPesni;
  128. }
  129. };
  130.  
  131. int main() {
  132. // se testira zadacata modularno
  133. int testCase;
  134. cin >> testCase;
  135.  
  136. int n, minuti, kojtip;
  137. char ime[50];
  138.  
  139. if(testCase == 1) {
  140. cout << "===== Testiranje na klasata Pesna ======" << endl;
  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. p.pecati();
  146. } else if(testCase == 2) {
  147. cout << "===== Testiranje na klasata CD ======" << endl;
  148. CD omileno(20);
  149. cin>>n;
  150. for (int i=0;i<n;i++){
  151. cin >> ime;
  152. cin >> minuti;
  153. cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  154. Pesna p(ime,minuti,(tip)kojtip);
  155. //cout << "ASD";
  156. omileno.dodadiPesna(p);
  157.  
  158.  
  159. }
  160. for (int i=0; i<n; i++)
  161. (omileno.getPesna(i)).pecati();
  162. }
  163. /* else if(testCase == 3) {
  164. cout << "===== Testiranje na metodot dodadiPesna() od klasata CD ======" << endl;
  165. CD omileno(20);
  166. cin>>n;
  167. for (int i=0;i<n;i++){
  168. cin >> ime;
  169. cin >> minuti;
  170. cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  171. Pesna p(ime,minuti,(tip)kojtip);
  172. omileno.dodadiPesna(p);
  173. }
  174. for (int i=0; i<omileno.getBroj(); i++)
  175. (omileno.getPesna(i)).pecati();
  176. }
  177. else if(testCase == 4) {
  178. cout << "===== Testiranje na metodot pecatiPesniPoTip() od klasata CD ======" << endl;
  179. CD omileno(20);
  180. cin>>n;
  181. for (int i=0;i<n;i++){
  182. cin >> ime;
  183. cin >> minuti;
  184. cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  185. Pesna p(ime,minuti,(tip)kojtip);
  186. omileno.dodadiPesna(p);
  187. }
  188. cin>>kojtip;
  189. omileno.pecatiPesniPoTip((tip)kojtip);
  190.  
  191. }
  192. else if(testCase == 5) {
  193. cout << "===== Testiranje na metodot pecatiPesniPoTip() od klasata CD ======" << endl;
  194. CD omileno(20);
  195. cin>>n;
  196. for (int i=0;i<n;i++){
  197. cin >> ime;
  198. cin >> minuti;
  199. cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
  200. Pesna p(ime,minuti,(tip)kojtip);
  201. omileno.dodadiPesna(p);
  202. }
  203. cin>>kojtip;
  204. omileno.pecatiPesniPoTip((tip)kojtip);
  205.  
  206. }
  207. */
  208.  
  209. return 0;
  210. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement