PTA:7-17 饮料的加工时间

一个茶吧提供三类饮料:茶、咖啡和牛奶。它们的加工时间有所不同,其中本地茶每份要50秒,其它茶要20秒;现磨咖啡要加120秒,其它咖啡加20秒;牛奶每份10秒。
给出下面的基类框架:
Class Drink

{

protected:

int NO; //编号

int amount; //数量

public:

virtual void display()=0;//输出提供时间

}
以Drink为基类,构建出Tea, Coffee和Milk三个类。
生成上述类,并编写主函数,要求主函数中有一个基类Drink指针数组,数组元素不超过10个。
Drink *pd[10];
主函数根据输入的信息,相应建立Tea, Coffee或Milk类对象,并给出收费。

输入格式:每个测试用例占一行,每行给出饮料的基本信息,第一个为饮料的类型,茶为1,咖啡为2,牛奶为3。接下来是申请的编号(100-999),然后是数量。对于茶叶来说,接下来输入一个地区代码,其中1代表本地。对于咖啡来说,接下来要输入一个加工代码,其中1代表现磨。最后一行为0。 要求输出编号和加工时间。
提示:应用虚函数实现多态
输入样例:
1 106 3 1
1 103 2 2
3 109 1
2 107 2 1
2 232 3 29
0
输出样例
106 150
103 40
109 10
107 240
232 60

#include<iostream>
using namespace std;
class Drink//基类,饮料
{
	protected:
		int NO;
		int amount;
	public:
		virtual void display()=0;//纯虚函数
};
class tea:public Drink//衍生类,茶
{
	int second;
	int dm;//成员地区代码,下同
	public:
		tea(int,int,int);
		virtual void display()//引用基类函数,下同
		{
			if(dm==1)
				second=50;
			else
				second=20;
			cout<<NO<<" "<<second*amount<<endl;
		}
};
tea::tea(int no,int num,int k)
{
	NO=no;
	amount=num;
	dm=k;
}
class coffee:public Drink
{
	int second;
	int dm;
	public:
		coffee(int,int,int);
		virtual void display()
		{
			if(dm==1)
				second=120;
			else
				second=20;
			cout<<NO<<" "<<second*amount<<endl;
		}
};
coffee::coffee(int no,int num,int k)
{
	NO=no;
	amount=num;
	dm=k;
}
class mike:public Drink
{
	int second=10;
	public:
		mike(int,int);
		virtual void display(){cout<<NO<<" "<<second*amount<<endl;	}
};
mike::mike(int no,int num)
{
	NO=no;
	amount=num;
}
int main()
{
	Drink *pd[10];//指向基类的指针数组
	int type,no,num,k,count=0;
	while(1)
	{
		cin>>type;
		if(type==0)//0结束
			break;
		switch(type)//用switch判断饮料类型
		{
			case 1:
				cin>>no>>num>>k;
				pd[count]=new tea(no,num,k);//将指针指向茶类,顺便初始化,下同
				break;
			case 2:
				cin>>no>>num>>k;
				pd[count]=new coffee(no,num,k);
				break;
			case 3:
				cin>>no>>num;
				pd[count]=new mike(no,num);
				break;
		}
		pd[count]->display();//所有类都有这个所有直接调用即可
		count++;//使下一个数组使用下一个指针
	}
	
	
	
}
全部评论

相关推荐

今天 16:40
已编辑
门头沟学院 C++
26学院本太难了,很多公司机筛就给我刷了。机会都难拿到如果是简历存在问题也欢迎拷打————————————————————分割线——————————————————————2026.3.4更新:发完贴之后,时不时投递又收到了不少的笔试/面试邀请。主要是之前投递简历出去之后基本上都是沉默状态,年后好转了不少timeline:2026.01.21&nbsp;文远知行笔试,半年多没刷算法题&nbsp;-&gt;挂&nbsp;(后续HR说春招可以重新安排笔试)2026.2.4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;小鹏汇天&nbsp;技术一面,第二周收到结果&nbsp;-&gt;挂2026.2.12&nbsp;&nbsp;&nbsp;大众Cariad代招&nbsp;技术二面&nbsp;-&gt;Offer2026.2.28&nbsp;&nbsp;&nbsp;多益网络技术面试,由于风评太差,一直在犹豫要不要接面试&nbsp;-&gt;推迟-----------分割线-----------2026.3&nbsp;月前的某一天,临时去电网报名了二批计算机岗位的笔试2026.3.6&nbsp;从上家公司实习离职,氛围最好的一家公司,leader&nbsp;说可以帮忙转正,但是流程太长,而且我们部门据说只有一个&nbsp;hc,更想要研究生,我很有可能是会被签外包公司在这里干活,就离职了。2026.3.9&nbsp;入职新公司,大众Cariad&nbsp;以外部公司的身份进组,项目组签了三年,后续三年应该都可以在这里呆,不知道有没有希望原地跳槽。2026.3.10&nbsp;电网考试居然说我通过资格审查了,短信约我去参加资格审查,请假一天,买了&nbsp;12&nbsp;号晚上的机票回成都2026.3.15&nbsp;参加国家电网计算机类笔试2026.3.17&nbsp;电网出成绩了,感觉很低。觉得已经🈚️了2026.3.18&nbsp;收到电网面试通知,通知&nbsp;3.22-3.25&nbsp;这个时间去面试,我的岗位只招&nbsp;1&nbsp;个人。据说面试只有&nbsp;2-3&nbsp;人,不知道能不能成功----------分割线-----------2026.3.21&nbsp;电网面试结束,感觉回答的还勉勉强强,大概是2个岗位分别招1个人,一共11人面试,实际来了9人2026.3.27&nbsp;出面试成绩,满分100分,早上10:20左右发现面试成绩46,我震惊了,没截图,后面过了十分钟重新看发现面试成绩给我改成58了。但同样震惊。朋友问我是不是把面试官打了,哈哈
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务