Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- DVD (дополнета) Problem 2 (0 / 0)
- Да се дефинира класата Film во која се чуваат информации за:
- име на филмот (динамички алоцирано поле од знаци)
- мемориската зафатнина на филмот изразена во MB
- жанр на филмот кој може да биде: акција, комедија или драма (енумерација zanr)
- Да се обезбедат сите потребни методи за класата за правилно функционирање на програмата.
- Дополнително за оваа класа да се дефинира функцијата:
- pecati() - функција во која ќе се печатат одделени со цртичка(-): мемориска зафатнина на филмот со постфикс MB и името на филмот во наводници.
- Да се креира класата DVD во која се чуваат информации за :
- низа од филмови снимени на DVD-то (Поле од најмногу 5 објекти од класата Film )
- број на филмови снимени на DVD-то
- меморискиот капацитет на DVD-то (во MB)
- Да се обезбедат сите потребни методи за класата за правилно функционирање на програмата.
- Дополнително за оваа класа да се дефинираат методите:
- dodadiFilm (Film f) - со кој се додава филмот f на DVDто, но само ако има доволно преостанато место (земајќи го предвид меморискиот капацитет на DVD-то и мемориската зафатнина на снимените филмови) и притоа да има помалку од 5 филмови на DVD-то.
- pecatiFilmoviDrugZanr(zanr z) – со кој се печатат информациите за сите филмови кои НЕ се од жанрот zanr (акција, комедија или драма).
- (дополнително барање):float procentNaMemorijaOdZanr(zanr z)- со кој се пресметува процентот на меморијата која ја зафаќаат филмовите од жанр z на DVD-то.
- Sample input
- 1
- Terminator 20 0
- Sample output
- ===== Testiranje na klasata Film ======
- 20MB-"Terminator"
- #include<iostream>
- #include<cstring>
- using namespace std;
- enum zanr {
- akcija, komedija, drama
- };
- class Film {
- private:
- char * ime;
- int memorija;
- zanr zanrFilm;
- void copy(const Film &f){
- this->ime = new char [strlen(f.ime)+1];
- strcpy(this->ime,f.ime);
- this->memorija=f.memorija;
- this->zanrFilm=f.zanrFilm;
- }
- public:
- Film(char * ime = "", int memorija=0, zanr zanrFilm = akcija){
- this->ime = new char [strlen(ime)+1];
- strcpy(this->ime,ime);
- this->memorija=memorija;
- this->zanrFilm=zanrFilm;
- }
- Film(const Film &f){
- copy(f);
- }
- ~Film() {
- delete ime;
- }
- Film &operator = (const Film &f){
- if (this!=&f){
- delete ime;
- copy(f);
- }
- return *this;
- }
- void pecati() {
- cout<<memorija<<"MB-"<<"\""<<ime<<"\""<<endl;
- }
- int getMemorija() {
- return memorija;
- }
- zanr getZhanr() {
- return zanrFilm;
- }
- };
- class DVD {
- private:
- Film filmovi[5];
- int broj;
- int kapacitet;
- int momentalno;
- public:
- DVD(int kapacitet){
- this->kapacitet=kapacitet;
- broj=0;
- momentalno=0;
- }
- void dodadiFilm(Film f) {
- if (momentalno+f.getMemorija()<=kapacitet && broj<5){
- filmovi[broj++]=f;
- momentalno+=f.getMemorija();
- }
- }
- void pecatiFilmoviDrugZanr(const zanr r){
- for (int i=0;i<broj;i++){
- // cout<<filmovi[i].pecati()<<" "<<r<<" "<<
- if (filmovi[i].getZhanr()!=r)
- filmovi[i].pecati();
- }
- }
- int getBroj() {
- return broj;
- }
- Film getFilm (int i){
- return filmovi[i];
- }
- float procentNaMemorijaOdZanr(zanr r){
- float sum = 0.0;
- for (int i=0;i<broj;i++)
- if (filmovi[i].getZhanr()==r)
- sum+=filmovi[i].getMemorija();
- return sum / momentalno * 100.0;
- }
- };
- int main() {
- // se testira zadacata modularno
- int testCase;
- cin >> testCase;
- int n, memorija, kojzanr;
- char ime[50];
- if (testCase == 1) {
- cout << "===== Testiranje na klasata Film ======" << endl;
- cin >> ime;
- cin >> memorija;
- cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
- Film f(ime, memorija, (zanr) kojzanr);
- f.pecati();
- } else if (testCase == 2) {
- cout << "===== Testiranje na klasata DVD ======" << endl;
- DVD omileno(50);
- cin >> n;
- for (int i = 0; i < n; i++) {
- cin >> ime;
- cin >> memorija;
- cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
- Film f(ime, memorija, (zanr) kojzanr);
- omileno.dodadiFilm(f);
- }
- for (int i = 0; i < n; i++)
- (omileno.getFilm(i)).pecati();
- } else if (testCase == 3) {
- cout << "===== Testiranje na metodot dodadiFilm() od klasata DVD ======" << endl;
- DVD omileno(50);
- cin >> n;
- for (int i = 0; i < n; i++) {
- cin >> ime;
- cin >> memorija;
- cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
- Film f(ime, memorija, (zanr) kojzanr);
- omileno.dodadiFilm(f);
- }
- for (int i = 0; i < omileno.getBroj(); i++)
- (omileno.getFilm(i)).pecati();
- } else if (testCase == 4) {
- cout << "===== Testiranje na metodot pecatiFilmoviDrugZanr() od klasata DVD ======" << endl;
- DVD omileno(50);
- cin >> n;
- for (int i = 0; i < n; i++) {
- cin >> ime;
- cin >> memorija;
- cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
- Film f(ime, memorija, (zanr) kojzanr);
- omileno.dodadiFilm(f);
- }
- cin >> kojzanr;
- omileno.pecatiFilmoviDrugZanr((zanr) kojzanr);
- } else if (testCase == 5) {
- cout << "===== Testiranje na metodot pecatiFilmoviDrugZanr() od klasata DVD ======" << endl;
- DVD omileno(50);
- cin >> n;
- for (int i = 0; i < n; i++) {
- cin >> ime;
- cin >> memorija;
- cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
- Film f(ime, memorija, (zanr) kojzanr);
- omileno.dodadiFilm(f);
- }
- cin >> kojzanr;
- omileno.pecatiFilmoviDrugZanr((zanr) kojzanr);
- } else if (testCase == 6){
- cout<<"===== Testirawe na metodot procentNaMemorijaOdZanr() od klasata DVD =====" <<endl;
- DVD omileno(40);
- cin >> n;
- for (int i = 0; i < n; i++) {
- cin >> ime;
- cin >> memorija;
- cin >> kojzanr; //se vnesuva 0 za AKCIJA,1 za KOMEDIJA i 2 za DRAMA
- Film f(ime, memorija, (zanr) kojzanr);
- omileno.dodadiFilm(f);
- }
- cin >> kojzanr;
- cout<<"Procent na filmovi od dadeniot zanr iznesuva: "<<omileno.procentNaMemorijaOdZanr((zanr) kojzanr)<<"%\n";
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement