ivanakarpuzova

Untitled

Sep 1st, 2017
148
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. class Camera
  7. {
  8. protected:
  9. char proizvoditel[20];
  10. char model[20];
  11. int godina;
  12. float rezolucija;
  13. public:
  14. Camera(char *Proizvoditel, char *Model, int Godina, float Rezolucija){
  15. strcpy(proizvoditel, Proizvoditel);
  16. strcpy(model, Model);
  17. godina = Godina;
  18. rezolucija = Rezolucija;
  19. }
  20. char* getModel()
  21. {
  22. return model;
  23. }
  24. float getRezolucija()
  25. {
  26. return rezolucija;
  27. }
  28.  
  29. virtual float price() =0;
  30. virtual float rentalPrice(int days) = 0;
  31. virtual ~Camera(){}
  32.  
  33.  
  34.  
  35.  
  36. };
  37.  
  38. class PhotoCamera : public Camera
  39. {
  40. private:
  41. bool format;
  42. public:
  43. PhotoCamera(char *Proizvoditel, char *Model, int Godina, float Rezolucija, bool Format) : Camera(Proizvoditel, Model, Godina, Rezolucija)
  44. {
  45. format=Format;
  46. }
  47. float price()
  48. {
  49. if(format == true)
  50. {
  51. return 100+ rezolucija *20+50;
  52. }
  53. else
  54. return 100+ rezolucija *20;
  55. }
  56.  
  57. float rentalPrice(int days){
  58. float cena = price();
  59. if(days >7)
  60. {
  61. cena = price() - price()*0.20;
  62. return cena/100*days;
  63. }
  64. else
  65. return price()/100*days;
  66. }
  67. ~PhotoCamera(){}
  68.  
  69.  
  70. };
  71.  
  72. class VideoCamera : public Camera
  73. {
  74. private:
  75. int dolzina;
  76. public:
  77.  
  78. VideoCamera(char *Proizvoditel, char *Model, int Godina, float Rezolucija, int Dolzina) : Camera(proizvoditel, Model, Godina, Rezolucija)
  79. {
  80. dolzina=Dolzina;
  81. }
  82. float price(){
  83. if(dolzina>3600)
  84. {
  85. return rezolucija*80 + (rezolucija*80 * 0.40);
  86. }
  87. else
  88. return rezolucija*80;
  89. }
  90.  
  91. ~VideoCamera(){}
  92.  
  93.  
  94. float rentalPrice(int days){
  95. float cena = price();
  96. if(days >7)
  97. {
  98. return price()/100 - (price()/100* 0.20 *days);
  99. }
  100. else
  101. return price()/100*days;
  102. }
  103.  
  104.  
  105. };
  106.  
  107. class FilmCamera : public Camera
  108. {
  109. private:
  110. int brzina;
  111. public:
  112. FilmCamera(char *Proizvoditel, char *Model, int Godina, float Rezolucija, int Brzina) : Camera(Proizvoditel, Model, Godina, Rezolucija)
  113. {
  114. brzina=Brzina;
  115. }
  116. float price(){
  117. if(brzina > 30){
  118. return 50000 + (brzina - 30)*5000;
  119. }
  120. else return 50000;
  121. }
  122.  
  123. ~FilmCamera(){}
  124.  
  125. float rentalPrice(int days)
  126. {
  127. if(brzina > 60)
  128. {
  129. return (1000 * days);
  130. }
  131. else
  132. return 500 * days;
  133. }
  134. };
  135.  
  136. float production(Camera **c, int num, int days)
  137. { float zbir=0;
  138. for(int i=0;i<num;i++)
  139. {
  140. zbir+= c[i]->rentalPrice(days);
  141. }
  142. return zbir;
  143. }
  144.  
  145. char *mostExpensiveCamera(Camera **c, int num){
  146.  
  147.  
  148. float max=-9999;
  149. int index = 0;
  150. for(int i=0;i<num;i++){
  151.  
  152. if(max < c[i]->price()){
  153. max=c[i]->price();
  154. index = i;
  155. }
  156.  
  157.  
  158. }
  159. return c[index]->getModel();
  160.  
  161. }
  162.  
  163.  
  164. int main(int argc, char *argv[])
  165. {
  166. // Variables for reading input
  167. char model[20], producer[20];
  168. int year, length, fps, n;
  169. float resolution;
  170. bool raw;
  171.  
  172. int t;
  173.  
  174. // Array of cameras
  175. Camera *c [10];
  176.  
  177. // Read number of cameras
  178. cin>>n;
  179.  
  180. for(int i = 0; i < n; ++i){
  181.  
  182. // Camera type: 1 - Photo, 2 - Video, 3 - Film
  183. cin>>t;
  184.  
  185. if (t==1){
  186. cin >> producer >> model >> year >> resolution;
  187. cin >> raw;
  188. c[i] = new PhotoCamera(producer, model, year, resolution, raw);
  189. }
  190. else if (t==2){
  191. cin >> producer >> model >> year >> resolution;
  192. cin >> length;
  193. c[i] = new VideoCamera(producer, model, year, resolution, length);
  194. }
  195. else if (t==3){
  196. cin >> producer >> model >> year >> resolution;
  197. cin >> fps;
  198. c[i] = new FilmCamera(producer, model, year, resolution, fps);
  199. }
  200. }
  201.  
  202.  
  203. // Production days
  204. int days;
  205. cin >> days;
  206.  
  207.  
  208. cout<<"Price of production is: " << production(c, n, days);
  209. cout<<"\n" << "Most expensive camera used in production is: " << mostExpensiveCamera(c, n);
  210.  
  211.  
  212. return 0;
  213. }
Advertisement
Add Comment
Please, Sign In to add comment