Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Camera
- {
- protected:
- char proizvoditel[20];
- char model[20];
- int godina;
- float rezolucija;
- public:
- Camera(char *Proizvoditel, char *Model, int Godina, float Rezolucija){
- strcpy(proizvoditel, Proizvoditel);
- strcpy(model, Model);
- godina = Godina;
- rezolucija = Rezolucija;
- }
- char* getModel()
- {
- return model;
- }
- float getRezolucija()
- {
- return rezolucija;
- }
- virtual float price() =0;
- virtual float rentalPrice(int days) = 0;
- virtual ~Camera(){}
- };
- class PhotoCamera : public Camera
- {
- private:
- bool format;
- public:
- PhotoCamera(char *Proizvoditel, char *Model, int Godina, float Rezolucija, bool Format) : Camera(Proizvoditel, Model, Godina, Rezolucija)
- {
- format=Format;
- }
- float price()
- {
- if(format == true)
- {
- return 100+ rezolucija *20+50;
- }
- else
- return 100+ rezolucija *20;
- }
- float rentalPrice(int days){
- float cena = price();
- if(days >7)
- {
- cena = price() - price()*0.20;
- return cena/100*days;
- }
- else
- return price()/100*days;
- }
- ~PhotoCamera(){}
- };
- class VideoCamera : public Camera
- {
- private:
- int dolzina;
- public:
- VideoCamera(char *Proizvoditel, char *Model, int Godina, float Rezolucija, int Dolzina) : Camera(proizvoditel, Model, Godina, Rezolucija)
- {
- dolzina=Dolzina;
- }
- float price(){
- if(dolzina>3600)
- {
- return rezolucija*80 + (rezolucija*80 * 0.40);
- }
- else
- return rezolucija*80;
- }
- ~VideoCamera(){}
- float rentalPrice(int days){
- float cena = price();
- if(days >7)
- {
- return price()/100 - (price()/100* 0.20 *days);
- }
- else
- return price()/100*days;
- }
- };
- class FilmCamera : public Camera
- {
- private:
- int brzina;
- public:
- FilmCamera(char *Proizvoditel, char *Model, int Godina, float Rezolucija, int Brzina) : Camera(Proizvoditel, Model, Godina, Rezolucija)
- {
- brzina=Brzina;
- }
- float price(){
- if(brzina > 30){
- return 50000 + (brzina - 30)*5000;
- }
- else return 50000;
- }
- ~FilmCamera(){}
- float rentalPrice(int days)
- {
- if(brzina > 60)
- {
- return (1000 * days);
- }
- else
- return 500 * days;
- }
- };
- float production(Camera **c, int num, int days)
- { float zbir=0;
- for(int i=0;i<num;i++)
- {
- zbir+= c[i]->rentalPrice(days);
- }
- return zbir;
- }
- char *mostExpensiveCamera(Camera **c, int num){
- float max=-9999;
- int index = 0;
- for(int i=0;i<num;i++){
- if(max < c[i]->price()){
- max=c[i]->price();
- index = i;
- }
- }
- return c[index]->getModel();
- }
- int main(int argc, char *argv[])
- {
- // Variables for reading input
- char model[20], producer[20];
- int year, length, fps, n;
- float resolution;
- bool raw;
- int t;
- // Array of cameras
- Camera *c [10];
- // Read number of cameras
- cin>>n;
- for(int i = 0; i < n; ++i){
- // Camera type: 1 - Photo, 2 - Video, 3 - Film
- cin>>t;
- if (t==1){
- cin >> producer >> model >> year >> resolution;
- cin >> raw;
- c[i] = new PhotoCamera(producer, model, year, resolution, raw);
- }
- else if (t==2){
- cin >> producer >> model >> year >> resolution;
- cin >> length;
- c[i] = new VideoCamera(producer, model, year, resolution, length);
- }
- else if (t==3){
- cin >> producer >> model >> year >> resolution;
- cin >> fps;
- c[i] = new FilmCamera(producer, model, year, resolution, fps);
- }
- }
- // Production days
- int days;
- cin >> days;
- cout<<"Price of production is: " << production(c, n, days);
- cout<<"\n" << "Most expensive camera used in production is: " << mostExpensiveCamera(c, n);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment