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

题目描述

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

要求如下:

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<iomanip>
#include<cstring>
using namespace std;
class Remote;
class Tv
{public:Tv(int state1,int volume1,int channel1,int mode2,int input2){state=state1;volume=volume1;channel=channel1;mode=mode2;input=input2;}void onoff();bool ison()const;  bool volup();bool voldown();void chanup();void chandown();void set_mode();void set_input();void settings()const;friend Remote;private:int state;//电视开关状态,on为1,off为0 int volume;//音量,取值范围从0-20 int maxchannel;//支持最大频道 int channel;//当前频道 int mode;//电视信号接受模式,Cable为1,Antenna为0 int input;//输入方式,VCR为1,TV为0
};void Tv::onoff()
{if(state==1)state=0;elsestate=1;
}bool Tv::ison() const
{if(state==1)return true;else return false;
}bool Tv::volup()
{if(ison()){volume++;return true;}elsereturn false;
} bool Tv::voldown()
{if(ison()){volume--;   return true;}elsereturn false;
}void Tv::chanup()
{if(ison())channel++;
}void Tv::chandown()
{if(ison())channel--;
}void Tv::set_mode()
{if(ison()&&mode==1)mode=0;else if(ison()&&mode==0)mode=1;
}void Tv::set_input()
{if(ison()&&input==1)input=0;else if(ison()&&input==0)input=1;
}void Tv::settings() const
{if(state==1)cout<<"on ";else if(state==0)cout<<"off ";cout<<volume<<" ";cout<<channel<<" ";if(mode==1)cout<<"Cable"<<" ";else if(mode==0)cout<<"Antenna"<<" ";if(input==1)cout<<"VCR"<<endl;else if(input==0)cout<<"TV"<<endl;
}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()
{char state1[20],mode1[20],input1[20];int volume1,channel1,state2,mode2,input2;cin>>state1>>volume1>>channel1>>mode1>>input1;if(strcmp(state1,"off")==0)state2=0;else if(strcmp(state1,"on")==0)state2=1;if(strcmp(mode1,"Cable")==0)mode2=1;else if(strcmp(mode1,"Antenna")==0)mode2=0;if(strcmp(input1,"VCR")==0)input2=1;else if(strcmp(input1,"TV")==0)input2=0;Tv Tv1(state2,volume1,channel1,mode2,input2);char a[20];char ch;while(cin>>a){Remote Remote1(mode2);if(strcmp(a,"onoff")==0)Remote1.onoff(Tv1);else if(strcmp(a,"volup")==0)Remote1.volup(Tv1);else if(strcmp(a,"voldown")==0)Remote1.voldown(Tv1);else if(strcmp(a,"chanup")==0)Remote1.chanup(Tv1);else if(strcmp(a,"chandown")==0)Remote1.chandown(Tv1);else if(strcmp(a,"set_chan")==0)Remote1.set_chan(Tv1,channel1);else if(strcmp(a,"set_mode")==0)Remote1.set_mode(Tv1);else if(strcmp(a,"set_input")==0)Remote1.set_input(Tv1);if(ch=getchar()=='\n')break;}Tv1.settings();return 0;
}

电视机与遥控器(友元类)相关推荐

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

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

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

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

  3. 【15分】F. 电视机与遥控器(友元类)

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

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

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

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

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

  6. C++中友元类使用场合

    在C++中我们可以將函数定义成类的友元函数,这样在函数中就可以访问类的私有成员.与函数相同,类也可以作为另一个类的友元类,在友元类中可以访问另外一个类的所有成员. 声明友元类的方法很简单,只需在类中写 ...

  7. C++ 笔记(30)— 友元函数与友元类

    我们知道类的私有成员只能在类的成员函数内部访问,如果想在别处访问对象的私有成员,只能通过类提供的接口(成员函数)间接地进行.这固然能够带来数据隐藏的好处,利于将来程序的扩充,但也会增加程序书写的麻烦. ...

  8. C++ primer 第七章之 友元函数与友元类

    1.为什么需要友元函数?  类具有封装和信息隐藏的特性: 只有类的成员函数才能访问类的私有成员,程序中的其他函数是无法访问私有成员的 ; 非成员函数可以访问类中的公有成员,但是如果将数据成员都定义为公 ...

  9. 友元类实例:日期类 学生类

    1.定义Date类 : Date类中定义了三个私有数据成员(year ,month,day) 2.定义Student类: 在Student类中定义了两个私有数据成员(name[] ,birthday) ...

最新文章

  1. C++的STL栈实现队列
  2. linux系统管理及vim
  3. ElasticSearch大数据分布式弹性搜索引擎使用
  4. Spring中经典的9种设计模式,一定要记牢,Java基础教程pdf百度云
  5. 几分钟学会归并排序和快速排序
  6. 转载,关于缓存穿透、缓存并发、缓存雪崩那些事
  7. junit:junit_JUnit ExpectedException规则:超越基础
  8. ASP.NET Core管道深度剖析
  9. 浏览器控件JxBrowser V6.14大版本发布 | 注入CSS
  10. Oracle用户权限
  11. 【前端杂记】断点续传
  12. 百度螺旋桨PaddleHelix论道“AI+生物计算”,加速推进多维价值释放
  13. 小米笔记本适合计算机专业吗,真Pro还是假专业?细说小米新笔记本电脑五宗罪...
  14. linux红帽子系统作用,linux 红帽子9.0操作系统怎么装?
  15. FrameMaker 2019中文版
  16. 经纬度(度分秒)坐标转换为小数格式(weixin公众号【图说GIS】)
  17. ExtJS中的renderTo何applyTo的差别
  18. linux版qq怎么传文件,QQ for linux终于能在线传送文件了~
  19. HEKA.FitMaster.v2.15(用来分析和测试那些通过Patchmaster或Pulse得
  20. 从程序员到项目经理(16):原来一切问题都是可以解决的

热门文章

  1. 查壳去壳和加壳的基本原理
  2. 说话人识别中的损失函数
  3. python水浒传名字次数_梁山上,小李广的“小”是什么意思?“病关索”是生病的关索?...
  4. 表格内容居中css样式,css表格中的内容如何居中?css表格中的文本样式介绍
  5. 获取股票历史数据和当前数据的API
  6. EasyPoi快速入门
  7. HIS(LIS、PACS、RIS、EMR)系统解决方案
  8. 天正怎么批量填充柱子_天正里面怎样大批量统一修改柱子的宽度和偏移量,是否有快捷键可以统一修改?...
  9. web servlce
  10. java serlet清空cookie_Java如何在Servlet中删除Cookie?