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, rok}; //(енумерација tip)
- class Pesna { //Да се дефинира класата Pesna во која се чуваат информации за (5 поени):
- private:
- char * pesna; //име на песна (динамички алоцирано поле од знаци)
- int minuti; //времетраење на песната во минути
- tip vid; //тип на песна кој може да биде: поп, рап или рок
- public: //Да се обезбедат сите потребни методи за класата за правилно функционирање на програмата. (10 поени)
- Pesna(char * pesna = "", int minuti = 0, tip vid=(tip)0) { //konstruktor so argumentiiiiiiiii
- this->pesna=new char[strlen(pesna)+1];
- strcpy(this->pesna, pesna);
- this->minuti=minuti;
- this->vid=vid;
- }
- Pesna(const Pesna &p) { //copy constructor
- this->pesna=new char[strlen(p.pesna)+1];
- strcpy(this->pesna, p.pesna);
- this->minuti=p.minuti;
- this->vid=p.vid;
- } //Дополнително за оваа класа да се дефинира методот:
- void pecati() { // pecati() - функција во која ќе се печатат одделени со цртичка(-):
- //името на песната во наводници и времетраењето на песната со постфикс min. (5 поени)
- cout<<"\""<<pesna<<"\""<<"-"<<minuti<<"min"<<endl;
- }
- tip gettip() {
- return vid;
- }
- int getminuti() {
- return minuti;
- }
- ~Pesna(){
- // delete [] pesna;
- }
- };
- class CD { //Да се креира класата CD во која се чуваат информации за (5 поени):
- Pesna niza[10]; //низа од песни снимени на CD-то (Поле од најмногу 10 објекти од класата Pesna )
- int broj; //број на песни снимени на CD-то
- int maxmin; //максимално времетраење на песните на CD-то (во минути)
- public: //Да се обезбедат сите потребни методи за класата за правилно функционирање на програмата. (5 поени)
- CD(int maxmin) {
- this->broj = 0;
- this->maxmin = maxmin;
- } //defaulten konstruktor
- CD(Pesna * niza = NULL, int broj = 0, int maxmin = 0) { //konstruktor so argumenti
- this->broj=broj;
- this->maxmin=maxmin;
- for(int i=0; i<broj; i++)
- this->niza[i]=niza[i];
- }
- CD(const CD &c) {
- this->broj=c.broj;
- this->maxmin=c.maxmin;
- for(int i=0; i<10; i++)
- this->niza[i]=c.niza[i];
- } //Дополнително за оваа класа да се дефинираат методите:
- void dodadiPesna(Pesna &p){//dodadiPesna (Pesna p) - со кој се додава
- int zbir=0;//песната p на CDто, но само ако има
- for(int i=0;i<broj;i++){// доволно преостанато место
- zbir=zbir+p.getminuti();//(земајќи го предвид
- }//максималното времетраење на песните на
- if(maxmin - zbir > p.getminuti() && broj<10){// CDто и времетраењата на песните на
- niza[broj++]=p;// CD-то) и ако има помалку од 10 песни на CD-то.
- }
- }
- void pecatiPesniPoTip (tip t){ //pecatiPesniPoTip(tip t)
- for(int i=0; i<broj;i++)
- if (niza[i].gettip() == t) //со кој се печатат информациите за сите песни од
- niza[i].pecati();//тип t (поп, рап или рок). (10 поени)
- }
- int getBroj() {
- return broj;
- }
- Pesna getPesna(int i) {
- return niza[i];
- }
- ~CD(){
- // delete [] niza;
- }
- };
- 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);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement