Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- enum tip{pop,rap,rock};
- class Pesna{
- private:
- char *song_name;
- int time;
- tip type;
- public:
- Pesna(const char *song_name="",int time=0,tip type=(tip)0)
- {
- this->song_name = new char[strlen(song_name)+1];
- strcpy(this->song_name,song_name);
- this->time=time;
- this->type=type;
- }
- Pesna(const Pesna &p)
- {
- this->song_name = new char[strlen(p.song_name)+1];
- strcpy(this->song_name,p.song_name);
- this->time=p.time;
- this->type=p.type;
- }
- void pecati()
- {
- cout<<"\""<<song_name<<"\""<<"-"<<time<<"min"<<endl;
- }
- int get_time()
- {
- return time;
- }
- tip get_tip()
- {
- return type;
- }
- };
- class CD{
- private:
- Pesna *pesni;
- int broj;
- int maxmin;
- public:
- CD()
- {
- this->maxmin=0;
- }
- CD(int maxmin)
- {
- this->maxmin=maxmin;
- this->pesni = new Pesna[0];
- this->broj=0;
- }
- CD(const CD &cd)
- {
- this->maxmin=cd.maxmin;
- this->broj=cd.broj;
- for(int i=0;i<cd.broj;i++)
- {
- this->pesni[i]=cd.pesni[i];
- }
- }
- void dodadiPesna(Pesna pesna)
- {
- int time=0;
- for(int i=0;i<broj;i++)
- {
- time+=pesni[i].get_time(); // Go sobirame vkupnoto vreme
- }
- // Sega ke proverime vkupnoto vreme + vremeto na argumentot dali e < maxvreme
- if((time+pesna.get_time()<maxmin)&&(broj<10))
- {
- pesni[broj++]=pesna;
- }
- }
- void pecatiPesniPoTip(tip arg)
- {
- for(int i=0;i<broj;i++)
- {
- if(pesni[i].get_tip()==arg)
- {
- pesni[i].pecati();
- }
- }
- }
- int getBroj()
- {
- return broj;
- }
- Pesna getPesna(int i)
- {
- return pesni[i];
- }
- };
- 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