Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- enum tip {pop, rap, rok};
- class Pesna {
- private:
- char *name;
- int length;
- tip type;
- void _copy(const Pesna &p) {
- this->name = new char[strlen(p.name) + 1];
- strcpy(this->name, p.name);
- this->length = p.length;
- this->type = p.type;
- }
- public:
- Pesna() {
- name = NULL;
- length = 0;
- //type = tip::pop;
- type = tip(0);
- }
- Pesna(const char *n, const int m, const tip tt) {
- this->name = new char[strlen(n) + 1];
- strcpy(name, n);
- length = m;
- type = tt;
- }
- Pesna (const Pesna &c) {
- _copy(c);
- }
- Pesna& operator= (const Pesna& p) {
- if (this == &p) {
- return *this;
- }
- delete [] this->name;
- _copy(p);
- return *this;
- }
- ~Pesna () {
- delete [] this->name;
- }
- void pecati() {
- cout << "\"" << name << "\"" << "-" << length << "min\n";
- }
- int getLength() {
- return this->length;
- }
- int getType() {
- return this->type;
- }
- };
- class CD {
- Pesna p[10];
- int bp;
- int min;
- int taken_minutes () {
- int m = 0;
- for (int i = 0; i < bp; ++i) {
- m += p[i].getLength();
- }
- return m;
- }
- public:
- CD (int m) {
- this->min = m;
- this->bp = 0;
- }
- void dodadiPesna (Pesna& p) {
- if (bp == 10) {
- return;
- }
- if ((min-taken_minutes()) < (p.getLength())) {
- return;
- }
- this->p[bp] = p;
- bp++;
- }
- void pecatiPesniPoTip (tip t) {
- for (int i = 0; i < bp; ++i) {
- if (p[i].getType() == t) {
- p[i].pecati();
- }
- }
- }
- Pesna& getPesna (int i) {
- return p[i];
- }
- int getBroj() {
- return bp;
- }
- };
- 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