【15分】F. 电视机与遥控器(友元类)
题目描述
有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视。
要求如下:
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. 电视机与遥控器(友元类)相关推荐
- C++(三十六)之电视机和遥控器友元类
我们今天设计的是简单的电视机和遥控器. 电视机类能控制电视开关机.调整音量和频道. 而这些功能在遥控器上面也可以完成,所以把遥控器设置成电视机 的友元类.这样遥控器也可以访问电视机内部的private ...
- 电视机与遥控器(友元类)
电视机与遥控器(友元类) 题目描述 有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视. 要求如下: 1.实现并完善Tv类:其中构造函数需修改和完善.另:最大频道为100: 2.将Remo ...
- 【C++OJ_静态与友元】电视机与遥控器(友元类)
[C++OJ_静态与友元]电视机与遥控器(友元类) 题目描述 有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视. 要求如下: 1.实现并完善Tv类:其中构造函数需修改和完善.另:最大频道 ...
- 08-F. 电视机与遥控器(友元类)
08-静态函数与友元 题目描述 有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视. 要求如下: 实现并完善Tv类:其中构造函数需修改和完善.另:最大频道为100: 将Remote设为Tv ...
- C++OJ电视机与遥控器(友元类)
题目描述 有如下的电视类和遥控器类,遥控器在电视开机的情况下可以控制电视. 要求如下: 1.实现并完善Tv类:其中构造函数需修改和完善.另:最大频道为100: 2.将Remote设为Tv的友元类,以支 ...
- C++语言基础(15)-友元函数和友元类
一个类中可以有 public.protected.private 三种属性的成员,通过对象可以访问 public 成员,只有本类中的函数可以访问本类的 private 成员.现在,我们来介绍一种例外情 ...
- 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]\ ...
- 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 ) { ...
- 【15分】C. 最胖的加菲(类与对象+数组)
[15分]C. 最胖的加菲(类与对象+数组) 题目描述 有一群猫猫,每只猫都有自己的名称和体重. 用类来描述猫,名称和体重都是私有属性,要求加入属性的get方法.其他函数根据需要自己定义 创建一个动态 ...
最新文章
- redis常用命令参考
- Dispatch_queue
- GDI+中发生一般性错误
- Clojure入门指南(Getting Started)
- Ajax(5)UpdatePanel的使用方法
- 【POJ - 1287】 Networking (并查集 + 最小生成树)
- 程序员的数学_数学公式太晦涩,不如用代码写出来:这是程序员学数学的独特方式...
- OpenStack第十四个版本及14项重要事实
- 白帽SQL注入实战过程记录(2)——根据information_schema组装SQL注入语句
- 【IT】一些有用的链接和操作
- NOI2018网络同步赛爆零记
- [JLOI 2016]成绩比较
- 软件需求规格说明书模板(Spec)
- paip.最省内存的浏览器评测 cah
- html实例,实现表单
- 翠贝卡VR 2017:把故事交到观众的手里
- 使用计算机辅助翻译的基本流程,计算机辅助翻译不同于机器翻译,计算机辅助翻译的原理和流程...
- 本地IP地址使用域名访问
- 今日头条网页数据采集接口
- gopl 底层编程(unsafe包)