Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string.h>
- using namespace std;
- enum tip{rok,pop,rap};
- class Pesna{
- private:
- char *ime;
- int vreme;
- tip t;
- public:
- Pesna(char *ime,int vreme,tip t){
- this->ime=new char[strlen(ime)+1];
- strcpy(this->ime,ime);
- this->vreme=vreme;
- this->t=t;
- }
- Pesna(){}
- ~Pesna(){
- delete [] ime;}
- int getVreme(){
- return vreme;
- }
- tip getTip(){
- return t;
- }
- Pesna(const Pesna &p1){
- this->ime=new char[strlen(p1.ime)+1];
- strcpy(this->ime,p1.ime);
- this->vreme=p1.vreme;
- this->t=p1.t;
- };
- Pesna& operator=(const Pesna &p1){
- if(this!=&p1){
- delete [] ime;
- this->ime=new char[strlen(p1.ime)+1];
- strcpy(this->ime,p1.ime);
- this->vreme=p1.vreme;
- this->t=p1.t;
- }
- return *this;
- }
- void pecati(){
- cout<<"\""<<ime<<"\"-"<<vreme<<"min"<<endl;
- }
- };
- class CD{
- private:
- Pesna *pesni;
- int broj;
- int maxvreme;
- public:
- Pesna getPesna(int i){
- return pesni[i];}
- int getBroj(){
- return broj;}
- int getVreme(){
- return maxvreme;}
- CD(int maxvreme=0,int broj=0){
- this->pesni=new Pesna[broj];
- this->maxvreme=maxvreme;
- this->broj=broj;
- }
- CD(){}
- ~CD(){
- delete [] pesni;}
- CD(const CD &c1){
- this->maxvreme=c1.maxvreme;
- this->broj=c1.broj;
- this->pesni=new Pesna[broj];
- for(int i=0;i<broj;i++)
- {
- pesni[i]=c1.pesni[i];
- }
- }
- CD& operator=(const CD &c1){
- if(this!=&c1){
- this->maxvreme=c1.maxvreme;
- this->broj=c1.broj;
- delete [] pesni;
- this->pesni=new Pesna[broj];
- for(int i=0;i<broj;i++)
- {
- pesni[i]=c1.pesni[i];
- }
- }
- return *this;
- }
- CD& dodadiPesna(Pesna p1){
- int suma=0;
- for(int i=0;i<broj;i++){
- suma+=pesni[i].getVreme();
- }
- if(suma+p1.getVreme()<maxvreme&&broj<10){
- broj++;
- Pesna *tmp=new Pesna[broj];
- for(int i=0;i<broj-1;i++)
- tmp[i]=pesni[i];
- tmp[broj-1]=p1;
- delete [] pesni;
- pesni=tmp;
- return *this;
- }
- return *this;
- }
- void pecatiPesniPoTip(tip t){
- for(int i=0;i<broj;i++)
- {
- if(pesni[i].getTip()==t)
- pesni[i].pecati();
- }
- }
- };
- int main() {
- // se testira zadacata modularno
- int testCase;
- cin >> testCase;
- int n, minuti, kojtip;
- char ime[50];
- if(testCase == 1) {
- cout << "===== Testiranje na klasata Pesna ======" << endl;
- cin >> ime;
- cin >> minuti;
- cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
- Pesna p(ime,minuti,(tip)kojtip);
- p.pecati();
- } else if(testCase == 2) {
- cout << "===== Testiranje na klasata CD ======" << endl;
- CD omileno(20);
- cin>>n;
- for (int i=0;i<n;i++){
- cin >> ime;
- cin >> minuti;
- cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
- Pesna p(ime,minuti,(tip)kojtip);
- omileno.dodadiPesna(p);
- }
- for (int i=0; i<n; i++)
- (omileno.getPesna(i)).pecati();
- }
- else if(testCase == 3) {
- cout << "===== Testiranje na metodot dodadiPesna() od klasata CD ======" << endl;
- CD omileno(20);
- cin>>n;
- for (int i=0;i<n;i++){
- cin >> ime;
- cin >> minuti;
- cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
- Pesna p(ime,minuti,(tip)kojtip);
- omileno.dodadiPesna(p);
- }
- for (int i=0; i<omileno.getBroj(); i++)
- (omileno.getPesna(i)).pecati();
- }
- else if(testCase == 4) {
- cout << "===== Testiranje na metodot pecatiPesniPoTip() od klasata CD ======" << endl;
- CD omileno(20);
- cin>>n;
- for (int i=0;i<n;i++){
- cin >> ime;
- cin >> minuti;
- cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
- Pesna p(ime,minuti,(tip)kojtip);
- omileno.dodadiPesna(p);
- }
- cin>>kojtip;
- omileno.pecatiPesniPoTip((tip)kojtip);
- }
- else if(testCase == 5) {
- cout << "===== Testiranje na metodot pecatiPesniPoTip() od klasata CD ======" << endl;
- CD omileno(20);
- cin>>n;
- for (int i=0;i<n;i++){
- cin >> ime;
- cin >> minuti;
- cin >> kojtip; //se vnesuva 0 za POP,1 za RAP i 2 za ROK
- Pesna p(ime,minuti,(tip)kojtip);
- omileno.dodadiPesna(p);
- }
- cin>>kojtip;
- omileno.pecatiPesniPoTip((tip)kojtip);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement