Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Задача 2 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-то.
- */
- #include <iostream>
- #include <string.h>
- using namespace std;
- enum zanr{akcija, komedija, drama};
- class Film{
- private:
- char *ime = new char[0];
- int memorija;
- zanr tip;
- public:
- Film(){}
- Film(char *Ime, int prostor, int zanra){
- strcpy(ime, Ime);
- memorija = prostor;
- tip = (zanr)zanra;
- }
- ~Film(){}
- //pecati
- void pecati(){
- cout << memorija << "MB-" << "\"" << ime << "\"" << endl;
- }
- int getMemorija(){
- return memorija;
- }
- zanr getZanr(){
- return tip;
- }
- };
- class DVD{
- private:
- Film filmovi[5];
- int brojFilmovi=0;
- int memorijaDVD;
- int vkupno;
- public:
- DVD(){}
- DVD(int memorija){
- memorijaDVD = memorija;
- vkupno = 0;
- }
- void dodadiFilm(Film filmce){
- if(brojFilmovi >= 5){
- return;
- }
- int novoVkupno = vkupno + filmce.getMemorija();
- if (novoVkupno > memorijaDVD){
- return;
- }
- vkupno = novoVkupno;
- filmovi[brojFilmovi]=filmce;
- brojFilmovi++;
- }
- Film getFilm(int i){
- return filmovi[i];
- }
- int getBroj(){
- return brojFilmovi;
- }
- void pecatiFilmoviDrugZanr(zanr n){
- for(int i = 0; i < brojFilmovi; i++){
- Film f = filmovi[i];
- if(f.getZanr()!=n){
- f.pecati();
- }
- }
- }
- float procentNaMemorijaOdZanr(zanr z){
- int akcijaTime = 0;
- int komedijaTime = 0;
- int dramaTime = 0;
- for(int i = 0; i < brojFilmovi; i++){
- Film f = filmovi[i];
- if(f.getZanr() == akcija){
- akcijaTime+=f.getMemorija();
- }
- else if(f.getZanr()== komedija){
- komedijaTime+=f.getMemorija();
- }
- else if(f.getZanr()== drama){
- dramaTime+=f.getMemorija();
- }
- }
- float pr;
- if(z == akcija){
- pr = (float)akcijaTime/vkupno*100;
- }
- else if(z == komedija){
- pr = (float)komedijaTime/vkupno*100;
- }
- else if(z == drama){
- pr = (float)dramaTime/vkupno*100;
- }
- return pr;
- }
- };
- 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<<"===== Testiranje 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;
- }
Add Comment
Please, Sign In to add comment