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++;//使下一个数组使用下一个指针
	}
	
	
	
}
全部评论

相关推荐

object3:开始给部分🌸孝子上人生第一课了
点赞 评论 收藏
分享
10-18 13:01
已编辑
西安理工大学 C++
小米内推大使:建议技能还是放上面吧,hr和技术面试官第一眼想看的应该是技能点和他们岗位是否匹配
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-21 17:16
科大讯飞 算法工程师 28.0k*14.0, 百分之三十是绩效,惯例只发0.9
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务