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

题目描述

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

要求如下:

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

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

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

输入

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

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

输出

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

输入样例

off 10 19 Cable VCR
onoff volup chanup set_mode set_input

输出样例

on 11 20 Antenna TV

参考代码

#include <iostream>
#include <cstring>
using namespace std;
class TV //电影类
{int state;      //电视开关状态,on或者offint volume;     //音量,取值范围从0到20int maxchannel; //支持最大频道int channel;    //当前频道int mode;       //电视信号接收模式,Cable或者Antennaint input;      //输入方式 VCR或者TVpublic:TV(int s, int v, int c, int m, int i) : state(s), volume(v), maxchannel(100), channel(c), mode(m), input(i) {} //构造函数void onoff()                                                                                                   //切换电视开关状态{if (ison() == true)state = 0;elsestate = 1;}bool ison() const // 判断电视开关状态,on返回true{if (state == 1)return true;elsereturn false;}void volup() //增加音量。执行一次+1{if (ison() == true){if (volume == 20);elsevolume++;}}void voldown() //降低音量。执行一次-1{if (ison() == true){if (volume == 0);elsevolume--;}}void chanup() //增加频道数,执行一次+1{if (ison() == true){if (channel == 100);elsechannel++;}}void chandown() //减少频道数,执行一次-1{if (ison() == true){if (channel == 1);elsechannel--;}}void set_mode() // 切换电视信号接收模式,初始为Cable{if (ison() == true){if (mode == 0)mode = 1;else if (mode == 1)mode = 0;}}void set_input() // 切换电视输入方式,初始为VCR{if (ison() == true){if (input == 0)input = 1;else if (input == 1)input = 0;}}void settings() const //按类中成员顺序,输出电视设置信息{if (state == 1)cout << "on ";elsecout << "off ";cout << volume << " " << channel << " ";if (mode == 1)cout << "Antenna ";elsecout << "Cable ";if (input == 1)cout << "TV";elsecout << "VCR";}friend class Remote; //将Remote设为Tv的友元类,以支持在Remote类中对Tv方法的调用。
};
class Remote
{int mode; //控制TV or VCR
public:Remote() {}Remote(int m) : mode(m) {}void volup(TV &t) { return t.volup(); }void 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()
{int v, c, s_n, m_n, i_n;char s[4], m[8], i[4];cin >> s >> v >> c >> m >> i;if (strcmp(s, "off") == 0)s_n = 0;elses_n = 1;if (strcmp(m, "Antenna") == 0)m_n = 1;elsem_n = 0;if (strcmp(i, "TV") == 0)i_n = 1;elsei_n = 0;TV t(s_n, v, c, m_n, i_n);int tt = 5;while (tt--){int cc;Remote r;char re[10];cin >> re;if (strcmp(re, "onoff") == 0)r.onoff(t);if (strcmp(re, "volup") == 0)r.volup(t);if (strcmp(re, "voldown") == 0)r.voldown(t);if (strcmp(re, "chanup") == 0)r.chanup(t);if (strcmp(re, "set_chan") == 0){cin >> cc;r.set_chan(t, cc);}if (strcmp(re, "set_mode") == 0)r.set_mode(t);if (strcmp(re, "set_input") == 0)r.set_input(t);}t.settings();cout << endl;return 0;
}

【C++OJ_静态与友元】电视机与遥控器(友元类)相关推荐

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

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

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

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

  3. 【C++OJ_静态与友元】判断矩形是否重叠(复合类+友元)

    [C++OJ_静态与友元]判断矩形是否重叠(复合类+友元) 题目描述 用CPoint表示点,用两个CPoint对象表示矩形类CRect的对角线两点.分别实现CPoint类和CRect类,并在主函数用输 ...

  4. C++ 类的知识 | 构造函数再探、匿名对象、友元函数、内部类、类的const成员、类的static成员

    文章目录 构造函数再探 以下代码共调用多少次拷贝构造函数 委托构造函数 概念 形式 匿名对象 友元 友元的声明 友元类 令成员函数作为友元 函数重载和友元 注意 内部类 特性 类的const成员 可变 ...

  5. 练习友元函数,有元类,快排和全排列问题

    写了一小段代码: 练习一下友元类和友元函数的声明和使用: 练习一下最简单的快排算法: 练习一下递归的方法处理全排列问题. 代码: 1 #include <stdlib.h> 2 #incl ...

  6. 类和对象—友元—全局函数做友元

    友元的目的是让一个函数或者一个类可以访问另一个类中的私有成员. 友元的关键字为friend 友元的三种实现 全局函数做友元 类做友元 成员函数做友元 1.全局函数做友元 #include <io ...

  7. C++:友元(非成员友元函数、成员友元函数、友元类)

    3.8  友元:友元函数和友元类 友元函数 :既可以是不属于任何类的非成员函数,也可以是另一个类的成员函数,统称为友元函数.友元函数不是当前类的成员函数,而是独立于类的外部函数,但它可以访问该类所有的 ...

  8. java有没有友元函数_c++中友元函数理解与使用

    在学习c++这一块,关于友元函数和友元类,感觉还是不好理解,但是井下心来,理解,需要把我一下几点. 首先讲友元函数. (1)友元函数: 1)C++中引入友元函数,是为在该类中提供一个对外(除了他自己意 ...

  9. 友元 java_深入浅出话友元

    深入浅出话友元 小序: 有一阵子没来打扫Blog了--技术这东西,就是走走停停的,一段时间就会遇到一个瓶颈.迷茫一下,然后发现与其因为迷茫而停滞不前,不如瞄准一个大方向勇敢地游下去. 这两天有几个正在 ...

最新文章

  1. AI泡沫之上,创业公司的护城河和边界扩张
  2. 【12c新特性】12c中如何自动启动PDB Pluggable Database
  3. php登录框注入,分享一个php的防火墙,拦截SQL注入和xss
  4. ORACLE--PMON SMON MMNL MMAN MMON
  5. 大学计算机2级考证计划书,计算机二级培训计划书..doc
  6. mysql数据库读写操作_一看就会,MySQL数据库的基本操作(二)
  7. 美团差评数据分析,python代码实现
  8. 完工任务不允许更改需求
  9. Dedecms V5.7后台的两处getshell
  10. 查看设备UUID的方法
  11. Excel 表格数据去重
  12. R语言 生存分析与cox模型的学习笔记
  13. 移动硬盘参数错误要怎么办啊
  14. 游戏排行榜实现mysql_游戏中百万用户排行设计与实现
  15. matlab模拟线圈电磁场,利用MATLAB的PDE工具箱对电场和磁场进行模拟
  16. 自动采集的网站源码-自动采集发布的电影小说新闻网站程序源码
  17. 项目管理 | 怎么开项目启动会?
  18. 安卓app对接网络验证系统一机一码源码脚本教程,一键注入网络验证工具
  19. 使用clion搭建CUDA开发环境
  20. 京东怎么做《IOS系统APP耗电量检测分析和优化》?

热门文章

  1. 恶意软件检测与分析:挑战与研究机遇
  2. 【涵子来信】——第一季——第1封
  3. 【腾讯云 Cloud Studio 实战训练营】永不宕机的IDE,Coding Everywhere
  4. VMware平替——推荐一款更轻量级的虚拟机,最重要的是免费哦
  5. 说说《隋唐演义》等英雄排名
  6. GLPT团队程序设计天梯赛 模拟赛 2023 L1部分
  7. axios的interceptors为何会多次执行
  8. 国开计算机专业英语,国开电大计算机专业英语阅读(河北)形考一
  9. 阿尔·里斯-市场营销的22条法则(22条商规)-18
  10. 设置session时间 php,php中实现精确设置session过期时间的方法