Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Кабелски телевизии Problem 15 (0 / 0)
- Да се креира класа TV во која се чуваат податоци за телевизиска програма:
- име (низа од максимум 100 знаци),
- вид (дигитална/аналогна),
- категорија (цел број),
- рејтинг (реален број). (5 поени)
- За оваа класа да се преоптоварат:
- оператор << - за печатење на информациите за телевизијата во формат: (2.5 поени)
- Име\n(A/D аналогна/дигитална)\nКатегорија\nРејтинг
- оператор == за споредба на две телевизии. Две телевизии се сметаат за исти ако имаат исто име и иста категорија (2.5 поени)
- оператор ++ кој го зголемува рејтингот на телевизијата за 0.5 (5 поени)
- Потоа да се креира класа KabelskiOperator во кој чуваат податоци за:
- име (низа од максимум 100 знаци),
- динамички алоцирана низа од објекти од класата TV, како и број на елементи во низата (цел број) (10 поени).
- За класата да се обезбедат:
- Оператор += – за додавање нова телевизија во кабелскиот оператор. Телевизијата се додава само ако има рејтинг поголем од 5, во спротивно се игнорира. (10 поени)
- Оператор << - за печатење на името и телевизиите кои ги нуди кабелскиот оператор (5 поени)
- Функција со потпис: void zgolemi(const TV& tv), која го зголемува рејтингот за 0.5 на телевизијата проследена како аргумент. (10 поени)
- Sample input
- 5 2
- Telekabel
- Cinemania 1 2 5.5
- SportKlub 1 1 6
- VH1 0 2 7
- Discovery 1 3 7
- CartoonNetwork 1 4 6
- Sample output
- Telekabel
- Cinemania
- D
- 2
- 5.5
- SportKlub
- D
- 1
- 6
- VH1
- A
- 2
- 7
- Discovery
- D
- 3
- 7
- CartoonNetwork
- D
- 4
- 6
- === ZGOLEMI ===
- VH1
- A
- 2
- 7
- Telekabel
- Cinemania
- D
- 2
- 5.5
- SportKlub
- D
- 1
- 6
- VH1
- A
- 2
- 7.5
- Discovery
- D
- 3
- 7
- CartoonNetwork
- D
- 4
- 6
- //Code//
- #include <iostream>
- #include <cstring>
- using namespace std;
- class TV{
- private:
- char ime[100];
- bool vid;
- int kategorija;
- float rejting;
- public:
- TV(const char *ime = " ", bool vid = false, int kategorija = 0, float rejting = 0.0){
- strcpy(this -> ime, ime);
- this -> vid = vid;
- this -> kategorija = kategorija;
- this -> rejting = rejting;}
- friend ostream &operator<<(ostream &out, TV &t){
- out<<t.ime<<endl;
- if(t.vid) out<<"D"<<endl;
- else out<<"A"<<endl;
- out<<t.kategorija<<endl;
- out<<t.rejting<<endl;
- return out;}
- bool operator==(TV &t){
- return (strcmp(this -> ime, t.ime) == 0)&&(this -> kategorija == t.kategorija);}
- TV &operator++(int){
- rejting+=0.5;
- return *this;
- }
- TV &operator=(const TV &ob){
- if(this != &ob){
- strcpy(ime, ob.ime);
- vid = ob.vid;
- kategorija = ob.kategorija;
- rejting = ob.rejting;
- }
- return *this;
- }
- float getRejting(){return this -> rejting;}
- ~TV(){}
- };
- class KabelskiOperator{
- private:
- char ime[100];
- TV *kanali;
- int n;
- public:
- KabelskiOperator(const char *ime = " "){
- strcpy(this -> ime, ime);
- this -> n=0;
- this -> kanali = new TV[n];
- }
- KabelskiOperator &operator+=(TV &t){
- if(t.getRejting()>5){
- TV *tmp = new TV[n+1];
- for(int i = 0; i < n; i++){
- tmp[i] = kanali[i];
- }
- delete [] kanali;
- kanali = tmp;
- kanali[n] = t;
- n++;
- }
- return *this;
- }
- friend ostream &operator<<(ostream &out, KabelskiOperator &ko){
- out<<ko.ime<<endl;
- for(int i = 0; i < ko.n; i++)
- out<<ko.kanali[i]<<endl;
- return out;
- }
- void zgolemi(TV &tv){
- for (int i = 0; i < n; i++){
- if(this -> kanali[i] == tv)
- kanali[i]++;
- }
- }
- };
- int main() {
- int n, x;
- cin >> n >> x;
- char name[100];
- cin >> name;
- KabelskiOperator ko(name);
- TV t;
- for(int i = 0; i < n; ++i) {
- char name[100];
- bool digital;
- int category;
- float rating;
- cin >> name >> digital >> category >> rating;
- TV tv(name, digital, category, rating);
- ko += tv;
- if(i == x) {
- t = tv;
- }
- }
- cout << ko;
- cout << "=== ZGOLEMI ===" << endl;
- cout << t;
- ko.zgolemi(t);
- cout << ko;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement