Advertisement
damch

cd

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