• Предмет: Информатика
  • Автор: Стефaник
  • Вопрос задан 6 лет назад

Написать программу на С++ с подробным объяснением.
Спроектировать класс, реализующий предметной области согласно варианту, и
разработать программу-драйвер (main-функцию), которая демонстрирует работу класса, а именно: возможные способы создания объектов классов и корректность функционирования
разработанных методов класса (запустить каждый метод класса хотя бы 2 раза).

Класс CTV (Телевизор). Класс хранит список каналов,
текущий канал, громкость, ресурс телевизора, состояние
включения. Конструктор имеет инициализировать эти
свойства. Методы позволяют модифицировать и
читать свойства, включать или выключать телевизор,
переключать канал, увеличивать / уменьшать громкость,
уменьшать ресурс телевизора при просмотре
телепередач, выводить на экран информацию о
текущее состояние телевизора.

Ответы

Ответ дал: Helper211
0

Ответ:

#include <string>

#include <iostream>

#include <vector>

using namespace std;

class Channel { // класс канал

   int num; // номер канала

   string name; // название канала

public:

   Channel(int n, string nm) { // конструктор с 2 параметрами

       num = n;

       name = nm;

   }

   int getNum() { // функция возвращает номер канала

       return num;

   }

   string getName() {// функция возвращает имя канала

       return name;

   }

};

class TV {// класс телевизор

   bool on; // Состояние включения

   char currentChannel; // Текущий канал

   int volume; // Громкость

   int resource; // Ресурс телевизора

   vector<Channel> channels; // Список каналов

public:

   TV(bool o, char cc, int v, vector<Channel> c, int rc) {// конструкторы

       on = o;

       currentChannel = cc;

       volume = v;

       channels = c;

       resource = rc;

   }

   void  Turn() { //функция вкл/выкл

       if (on) on = false;

       else on = true;

   }

   void UseTv() { // Смотреть телепередачи какое-то время

       if (on)

       {

           if (resource > 0) resource--;

           else this->Turn();

       }

   }

   void isOn() { // возвращает значение включен телевизор или нет

       if (on) cout << "Телевизор включен"<< endl;

       else cout << "Телевизор выключен" << endl;

   }

   void switchChannel(bool up) {// функция переключения каналов

       if (!on) Turn();

       if (up) { // если нажата клавиша вверх

           if (currentChannel < channels.size() - 1) // если канал не последний

               currentChannel++; // то переходим на следующий канал

           else

               currentChannel = 0; // иначе возвращаемся на следующий канал

       }

       else { // нажали вниз

           if (currentChannel > 0)

               currentChannel--;

           else

               currentChannel = channels.size() - 1;

       }

   }

   void switchVolume(bool up) { //функция изменения громкости

       if (on) {

           if (up) {

               if (volume < 100)

                   volume++;

           }

           else {

               if (volume > 0)

                   volume--;

           }

       }

   }

   void getCurrentChannel() { //получаем текущий канал

       cout << "Текущий канал: " << channels[currentChannel].getNum() << " - "  

           << channels[currentChannel].getName() << endl;

   }

   void getVolume() { //получаем текущую громкость

       cout << "Громкость телевизора: " << volume << endl;

   }

   void getResource() { //получаем текущий ресурс

       cout << "Ресурс телевизора: " << resource << endl;

   }

};

int main() {

   setlocale(LC_ALL, "Russian");

   vector <Channel> channels = { {1,"ch1"},{2,"ch2"},{3,"ch3"} };

   TV tv(false, 1, 50, channels, 100); //создаем телевизор с заданными параметрами

   // Демонстрация работы и проверка функционирования ТВ

   // (запускаем каждый метод хотя бы 2 раза)

   tv.Turn();

   tv.isOn();

   tv.getVolume();

   tv.getCurrentChannel();

   tv.getResource();

   tv.UseTv();

   tv.switchVolume(true);

   tv.switchChannel(true);

   tv.getVolume();

   tv.getCurrentChannel();

   tv.getResource();

   tv.UseTv();

   tv.switchVolume(false);

   tv.switchChannel(false);

   tv.getCurrentChannel();

   tv.getVolume();

   tv.getResource();

   tv.Turn();

   tv.isOn();

}

Вас заинтересует