Advertisement
SlavkovB

Кабелски телевизии OOP Exercises

Jun 5th, 2016
281
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.99 KB | None | 0 0
  1. Кабелски телевизии Problem 15 (0 / 0)
  2. Да се креира класа TV во која се чуваат податоци за телевизиска програма:
  3.  
  4. име (низа од максимум 100 знаци),
  5. вид (дигитална/аналогна),
  6. категорија (цел број),
  7. рејтинг (реален број). (5 поени)
  8. За оваа класа да се преоптоварат:
  9.  
  10. оператор << - за печатење на информациите за телевизијата во формат: (2.5 поени)
  11.  
  12. Име\n(A/D аналогна/дигитална)\nКатегорија\nРејтинг
  13.  
  14. оператор == за споредба на две телевизии. Две телевизии се сметаат за исти ако имаат исто име и иста категорија (2.5 поени)
  15.  
  16. оператор ++ кој го зголемува рејтингот на телевизијата за 0.5 (5 поени)
  17. Потоа да се креира класа KabelskiOperator во кој чуваат податоци за:
  18.  
  19. име (низа од максимум 100 знаци),
  20. динамички алоцирана низа од објекти од класата TV, како и број на елементи во низата (цел број) (10 поени).
  21. За класата да се обезбедат:
  22.  
  23. Оператор += – за додавање нова телевизија во кабелскиот оператор. Телевизијата се додава само ако има рејтинг поголем од 5, во спротивно се игнорира. (10 поени)
  24. Оператор << - за печатење на името и телевизиите кои ги нуди кабелскиот оператор (5 поени)
  25. Функција со потпис: void zgolemi(const TV& tv), која го зголемува рејтингот за 0.5 на телевизијата проследена како аргумент. (10 поени)
  26.  
  27. Sample input
  28. 5 2
  29. Telekabel
  30. Cinemania 1 2 5.5
  31. SportKlub 1 1 6
  32. VH1 0 2 7
  33. Discovery 1 3 7
  34. CartoonNetwork 1 4 6
  35.  
  36. Sample output
  37. Telekabel
  38. Cinemania
  39. D
  40. 2
  41. 5.5
  42.  
  43. SportKlub
  44. D
  45. 1
  46. 6
  47.  
  48. VH1
  49. A
  50. 2
  51. 7
  52.  
  53. Discovery
  54. D
  55. 3
  56. 7
  57.  
  58. CartoonNetwork
  59. D
  60. 4
  61. 6
  62.  
  63. === ZGOLEMI ===
  64. VH1
  65. A
  66. 2
  67. 7
  68. Telekabel
  69. Cinemania
  70. D
  71. 2
  72. 5.5
  73.  
  74. SportKlub
  75. D
  76. 1
  77. 6
  78.  
  79. VH1
  80. A
  81. 2
  82. 7.5
  83.  
  84. Discovery
  85. D
  86. 3
  87. 7
  88.  
  89. CartoonNetwork
  90. D
  91. 4
  92. 6
  93.  
  94. //Code//
  95.  
  96.  
  97.  
  98. #include <iostream>
  99. #include <cstring>
  100. using namespace std;
  101.  
  102. class TV{
  103. private:
  104.     char ime[100];
  105.     bool vid;
  106.     int kategorija;
  107.     float rejting;
  108. public:
  109.     TV(const char *ime = " ", bool vid = false, int kategorija = 0, float rejting = 0.0){
  110.     strcpy(this -> ime, ime);
  111.     this -> vid = vid;
  112.     this -> kategorija = kategorija;
  113.     this -> rejting = rejting;}
  114.    
  115.     friend ostream &operator<<(ostream &out, TV &t){
  116.     out<<t.ime<<endl;
  117.     if(t.vid) out<<"D"<<endl;
  118.       else out<<"A"<<endl;
  119.     out<<t.kategorija<<endl;
  120.     out<<t.rejting<<endl;
  121.         return out;}
  122.    
  123.     bool operator==(TV &t){
  124.     return (strcmp(this -> ime, t.ime) == 0)&&(this -> kategorija == t.kategorija);}
  125.    
  126.     TV &operator++(int){
  127.     rejting+=0.5;
  128.         return *this;
  129.     }
  130.    
  131.     TV &operator=(const TV &ob){
  132.         if(this != &ob){
  133.     strcpy(ime, ob.ime);
  134.     vid = ob.vid;
  135.     kategorija = ob.kategorija;
  136.     rejting = ob.rejting;
  137.         }
  138.         return *this;
  139.     }
  140.     float getRejting(){return this -> rejting;}
  141.     ~TV(){}
  142. };
  143.    
  144. class KabelskiOperator{
  145. private:   
  146.     char ime[100];
  147.     TV *kanali;
  148.     int n;
  149. public:
  150.     KabelskiOperator(const char *ime = " "){
  151.     strcpy(this -> ime, ime);
  152.     this -> n=0;
  153.     this -> kanali = new TV[n];
  154.     }
  155.    
  156.     KabelskiOperator &operator+=(TV &t){
  157.         if(t.getRejting()>5){
  158.         TV *tmp = new TV[n+1];
  159.             for(int i = 0; i < n; i++){
  160.             tmp[i] = kanali[i];
  161.             }
  162.        
  163.         delete [] kanali;
  164.         kanali = tmp;
  165.         kanali[n] = t;
  166.         n++;
  167.         }
  168.     return *this;
  169.     }
  170.    
  171.     friend ostream &operator<<(ostream &out, KabelskiOperator &ko){
  172.         out<<ko.ime<<endl;
  173.         for(int i = 0; i < ko.n; i++)
  174.             out<<ko.kanali[i]<<endl;
  175.         return out;
  176.     }
  177.    
  178.     void zgolemi(TV &tv){
  179.         for (int i = 0; i < n; i++){
  180.             if(this -> kanali[i] == tv)
  181.             kanali[i]++;
  182.         }
  183.     }
  184. };
  185.  
  186. int main() {
  187.     int n, x;
  188.     cin >> n >> x;
  189.     char name[100];
  190.     cin >> name;
  191.     KabelskiOperator ko(name);
  192.     TV t;
  193.     for(int i = 0; i < n; ++i) {
  194.         char name[100];
  195.         bool digital;
  196.         int category;
  197.         float rating;
  198.         cin >> name >> digital >> category >> rating;
  199.         TV tv(name, digital, category, rating);
  200.         ko += tv;
  201.         if(i == x) {
  202.             t = tv;
  203.         }
  204.     }
  205.     cout << ko;
  206.     cout << "=== ZGOLEMI ===" << endl;
  207.     cout << t;
  208.     ko.zgolemi(t);
  209.     cout << ko;
  210.     return 0;
  211. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement