Advertisement
DimiK

Вежба[Кабелски телевизии]

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