Advertisement
JStefan

[Vezbi] Kabelski televizii

Mar 29th, 2017
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.76 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. // vashiot kod ovde
  6.  
  7. void string_copy(char* dest,const char* source,const int length) {
  8.     strncpy(dest, source, length);
  9.     dest[length] = 0;
  10. }
  11.  
  12. class TV {
  13.     char ime[100];
  14.     bool digital;
  15.     int kategorija;
  16.     float rejting;
  17. public:
  18.     TV(const char* _ime = "", const bool _digital = false, const int _kategorija = 0, const float _rejting = 0.0) {
  19.         string_copy(ime, _ime, 99);
  20.         digital = _digital;
  21.         kategorija = _kategorija;
  22.         rejting = _rejting;
  23.     }
  24.  
  25.     TV(const TV& obj) {
  26.         string_copy(ime, obj.ime, 99);
  27.         digital = obj.digital;
  28.         kategorija = obj.kategorija;
  29.         rejting = obj.rejting;
  30.     }
  31.  
  32.     TV& operator=(const TV& obj) {
  33.         if(this != &obj) {
  34.            string_copy(ime, obj.ime, 99);
  35.             digital = obj.digital;
  36.             kategorija = obj.kategorija;
  37.             rejting = obj.rejting;
  38.         }
  39.         return *this;
  40.     }
  41.  
  42.     bool operator==(const TV& obj) {
  43.         return (strcmp(ime, obj.ime) == 0) && (kategorija == obj.kategorija);
  44.     }
  45.  
  46.     TV& operator++() {
  47.         rejting += 0.5;
  48.         return *this;
  49.     }
  50.  
  51.     friend ostream& operator<<(ostream& out, const TV& obj) {
  52.         out << obj.ime << endl;
  53.         out << (obj.digital ? ("D") : ("A")) << endl;
  54.         out << obj.kategorija << endl;
  55.         out << obj.rejting << endl;
  56.         return out;
  57.     }
  58.  
  59.     ~TV() {}
  60.  
  61.     float getRejting() const { return rejting; }
  62.  
  63. };
  64.  
  65. class KabelskiOperator {
  66.     char ime[100];
  67.     TV* tvs;
  68.     int broj_televizii;
  69. public:
  70.     KabelskiOperator(const char* _ime = "") {
  71.         string_copy(ime, _ime, 99);
  72.         broj_televizii = 0;
  73.         tvs = NULL;
  74.     }
  75.  
  76.     KabelskiOperator(const KabelskiOperator& obj) {
  77.         string_copy(ime, obj.ime, 99);
  78.         broj_televizii = obj.broj_televizii;
  79.         tvs = new TV[broj_televizii];
  80.         for(int i = 0; i < broj_televizii; ++i) {
  81.             tvs[i] = obj.tvs[i];
  82.         }
  83.     }
  84.  
  85.     KabelskiOperator& operator=(const KabelskiOperator& obj) {
  86.         if(this != &obj) {
  87.             string_copy(ime, obj.ime, 99);
  88.             broj_televizii = obj.broj_televizii;
  89.             delete [] tvs;
  90.             tvs = new TV[broj_televizii];
  91.             for(int i = 0; i < broj_televizii; ++i) {
  92.                 tvs[i] = obj.tvs[i];
  93.             }
  94.         }
  95.         return *this;
  96.     }
  97.  
  98.     KabelskiOperator& operator+=(const TV& obj) {
  99.         if(obj.getRejting() > 5) {
  100.             TV* temp = new TV[broj_televizii+1];
  101.             for(int i = 0; i < broj_televizii; ++i) {
  102.                 temp[i] = tvs[i];
  103.             }
  104.             delete [] tvs;
  105.             tvs = temp;
  106.             tvs[broj_televizii++] = obj;
  107.         }
  108.         return *this;
  109.     }
  110.  
  111.     friend ostream& operator<<(ostream& out, const KabelskiOperator& obj) {
  112.         out << obj.ime << endl;
  113.         for(int i = 0; i < obj.broj_televizii; ++i) {
  114.             out << obj.tvs[i] << endl;
  115.         }
  116.         return out;
  117.     }
  118.  
  119.     ~KabelskiOperator() {
  120.         delete [] tvs;
  121.     }
  122.  
  123.     void zgolemi(const TV& tv) {
  124.         for(int i = 0; i < broj_televizii; ++i) {
  125.             if(tvs[i] == tv) {
  126.                 ++tvs[i];
  127.                 break;
  128.             }
  129.         }
  130.     }
  131. };
  132.  
  133. int main() {
  134.     int n, x;
  135.     cin >> n >> x;
  136.     char name[100];
  137.     cin >> name;
  138.     KabelskiOperator ko(name);
  139.     TV t;
  140.     for(int i = 0; i < n; ++i) {
  141.         char name[100];
  142.         bool digital;
  143.         int category;
  144.         float rating;
  145.         cin >> name >> digital >> category >> rating;
  146.         TV tv(name, digital, category, rating);
  147.         ko += tv;
  148.         if(i == x) {
  149.             t = tv;
  150.         }
  151.     }
  152.     cout << ko;
  153.     cout << "=== ZGOLEMI ===" << endl;
  154.     cout << t;
  155.     ko.zgolemi(t);
  156.     cout << ko;
  157.     return 0;
  158. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement