1
gorazd
c_cpp
a month ago
3.6 kB
3
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