1
gorazd
c_cpp
7 months ago
3.6 kB
4
Indexable
1kolok_OOP
#include <iostream>
#include <cstring>
using namespace std;
enum type{DEFAULT = -1,pop,rap,rock};
class Pesna {
char *name;
int length;
type songType;
public:
Pesna(char *_name = "", int _length = 0,enum type _type = DEFAULT) {
name = new char[strlen(_name) + 1];
strcpy(name, _name);
length = _length;
songType = _type;
};
~Pesna() {
delete[] name;
}
Pesna(const Pesna &p) {
name = new char[strlen(p.name)+1];
strcpy(name,p.name);
length = p.length;
songType = p.songType;
}
Pesna &operator= (const Pesna &p) {
if (this != &p) { // Self-assignment check
delete[] name; // Free old memory
name = new char[strlen(p.name) + 1];
strcpy(name, p.name);
length = p.length;
songType = p.songType;
}
return *this;
}
enum type getType(){return songType;}
int getLength(){return length;}
void pecati() {
cout<<"\""<<name<<"\"-"<<length<<"min"<<endl;
}
};
class CD {
Pesna pesni[10];
int numberOfSongs;
int maxLength;
public:
CD(int maxLength) {
this->maxLength=maxLength;
numberOfSongs = 0;
}
~CD(){}
int get_max_length(){return maxLength;}
Pesna getPesna(int i){return pesni[i];}
int getBroj(){return numberOfSongs;}
void dodadiPesna(Pesna p) {
int totalLength = 0;
for (int i = 0; i<numberOfSongs; i++)
totalLength += pesni[i].getLength();
if (numberOfSongs<10 and totalLength+p.getLength()<=maxLength) {
pesni[numberOfSongs] = p;
numberOfSongs++;
}
}
void pecatiPesniPoTip(type t) {
for (int i = 0; i<numberOfSongs; i++) {
if (pesni[i].getType()==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,(type)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,(type)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,(type)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,(type)kojtip);
omileno.dodadiPesna(p);
}
cin>>kojtip;
omileno.pecatiPesniPoTip((type)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,(type)kojtip);
omileno.dodadiPesna(p);
}
cin>>kojtip;
omileno.pecatiPesniPoTip((type)kojtip);
}
return 0;
}Editor is loading...
Leave a Comment