题目描述
有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视。

要求如下:

1.实现并完善Tv类;其中构造函数需修改和完善。另:最大频道为100;

2.将Remote设为Tv的友元类,以支持在Remote类中对Tv方法的调用。

3.在main函数中,通过Remote实例对TV实例进行操作。

输入
第一行,电视初始状态,依次为state,volume,channel,mode,input的初始值。

第二行,利用遥控器对上述状态的操作指令,用对应的函数名表示,如增加音量为volup

输出
第一行,执行遥控器操作后的状态。

输入样例1

off 10 19 Cable VCR
onoff volup chanup set_mode set_input

输出样例1

on 11 20 Antenna TV

代码

#include <iostream>
using namespace std;class Tv
{private:int state, volume, maxchannel, channel, mode, input;public:Tv(int s, int vl, int mc, int chn, int md, int ip) {state = s; volume = vl; maxchannel = mc; channel = chn; mode = md; input = ip;}void onoff() {state ^= 1;}bool ison()const   {return state;}bool volup() {if(volume < 20) return volume ++;else return volume;}bool voldown() {if(volume > 0) return volume --;else return volume;}void chanup()   {if(channel < maxchannel) channel ++;}void chandown() {if(channel > 0) channel --;}void set_mode() {mode ^= 1;}void set_input() {input ^= 1;}void settings() const{string State[2]={"off","on"};string Mode[2]={"Cable","Antenna"};string Input[2]={"VCR","TV"};cout << State[state] << " " << volume << " " << channel << " " << Mode[mode] << " " << Input[input] << endl;}friend class Remote;
};class Remote
{private:int mode;public:Remote(int m) : mode(m) {}bool volup(Tv &t) {return t.volup();}bool voldown(Tv &t) {return t.voldown();}void onoff(Tv &t) {t.onoff();}void chanup(Tv &t) {t.chanup();}void chandown(Tv &t) {t.chandown();}void set_chan(Tv &t, int c) {t.channel = c;}void set_mode(Tv &t) {t.set_mode();}void set_input(Tv &t) {t.set_input();}
};int main()
{string state, mode, input;int volumn, channel;int s, md, ip;cin >> state >> volumn >> channel >> mode >> input;if(state == "off") s = 0;else s = 1;if(mode == "Cable") md = 0;else md = 1;if(input == "VCR") ip = 0;else ip = 1;Tv mytv(s, volumn, 100, channel, md, ip);Remote myre(md);string command;while(cin >> command){if(command == "onoff") myre.onoff(mytv);else if(mytv.ison()){if(command == "volup") myre.volup(mytv);else if(command == "voldown") myre.voldown(mytv);else if(command == "chanup") myre.chanup(mytv);else if(command == "chandown") myre.chandown(mytv);else if(command == "set_mode") myre.set_mode(mytv);else if(command == "set_input") myre.set_input(mytv);}}mytv.settings();return 0;
}

【15分】F. 电视机与遥控器(友元类)相关推荐

  1. C++(三十六)之电视机和遥控器友元类

    我们今天设计的是简单的电视机和遥控器. 电视机类能控制电视开关机.调整音量和频道. 而这些功能在遥控器上面也可以完成,所以把遥控器设置成电视机 的友元类.这样遥控器也可以访问电视机内部的private ...

  2. 电视机与遥控器(友元类)

    电视机与遥控器(友元类) 题目描述 有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视. 要求如下: 1.实现并完善Tv类:其中构造函数需修改和完善.另:最大频道为100: 2.将Remo ...

  3. 【C++OJ_静态与友元】电视机与遥控器(友元类)

    [C++OJ_静态与友元]电视机与遥控器(友元类) 题目描述 有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视. 要求如下: 1.实现并完善Tv类:其中构造函数需修改和完善.另:最大频道 ...

  4. 08-F. 电视机与遥控器(友元类)

    08-静态函数与友元 题目描述 有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视. 要求如下: 实现并完善Tv类:其中构造函数需修改和完善.另:最大频道为100: 将Remote设为Tv ...

  5. C++OJ电视机与遥控器(友元类)

    题目描述 有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视. 要求如下: 1.实现并完善Tv类:其中构造函数需修改和完善.另:最大频道为100: 2.将Remote设为Tv的友元类,以支 ...

  6. C++语言基础(15)-友元函数和友元类

    一个类中可以有 public.protected.private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员.现在,我们来介绍一种例外情 ...

  7. 4-2 多项式求值   (15分) 本题要求实现一个函数,计算阶数为n,系数为a[0] ... a[n]的多项式 f(x)=∑i=0n(a[i]×xi)f(x)=\sum_{i=0}^{n}(a[i]

    4-2 多项式求值   (15分) 本题要求实现一个函数,计算阶数为n,系数为a[0] ... a[n]的多项式f(x)=∑i=0n(a[i]×xi)f(x)=\sum_{i=0}^{n}(a[i]\ ...

  8. 6-2 多项式求值(15 分) 本题要求实现一个函数,计算阶数为n,系数为a[0] ... a[n]的多项式f(x)=∑ ​i=0 ​n ​​ (a[i]×x ​i ​​ ) 在x点的值。

    题目链接:https://pintia.cn/problem-sets/14/problems/734 提交: double f( int n, double a[], double x ) {   ...

  9. 【15分】C. 最胖的加菲(类与对象+数组)

    [15分]C. 最胖的加菲(类与对象+数组) 题目描述 有一群猫猫,每只猫都有自己的名称和体重. 用类来描述猫,名称和体重都是私有属性,要求加入属性的get方法.其他函数根据需要自己定义 创建一个动态 ...

最新文章

  1. redis常用命令参考
  2. Dispatch_queue
  3. GDI+中发生一般性错误
  4. Clojure入门指南(Getting Started)
  5. Ajax(5)UpdatePanel的使用方法
  6. 【POJ - 1287】 Networking (并查集 + 最小生成树)
  7. 程序员的数学_数学公式太晦涩,不如用代码写出来:这是程序员学数学的独特方式...
  8. OpenStack第十四个版本及14项重要事实
  9. 白帽SQL注入实战过程记录(2)——根据information_schema组装SQL注入语句
  10. 【IT】一些有用的链接和操作
  11. NOI2018网络同步赛爆零记
  12. [JLOI 2016]成绩比较
  13. 软件需求规格说明书模板(Spec)
  14. paip.最省内存的浏览器评测 cah
  15. html实例,实现表单
  16. 翠贝卡VR 2017:把故事交到观众的手里
  17. 使用计算机辅助翻译的基本流程,计算机辅助翻译不同于机器翻译,计算机辅助翻译的原理和流程...
  18. 本地IP地址使用域名访问
  19. 今日头条网页数据采集接口
  20. gopl 底层编程(unsafe包)

热门文章

  1. Array.sort用法
  2. android系统锁屏详解
  3. 乐观者和悲观者的成功密码
  4. java创建List时候 初始化赋值
  5. SAP Product Lifecycle Costing 里的 Costing Sheet 成本核算表
  6. Python标准库:datetime 时间和日期模块 —— 时间的获取和操作详解
  7. 学习历程--普中51单片机A2--LED实验
  8. 【GoCN酷Go推荐】Go 系统监控利器-gopsutil
  9. LeetCode 978 最长湍流子数组
  10. securecrt 6.1注册码