(考试)2017年大一下学期C++期末考试题目四

xiaoxiao2021-02-28  83

4004:账单:虚函数应用

Problem Description 超市管理系统需要计算每个商品销售额(商品单价*销售量)。因此需要定义一个sale类,数据成员包括名称、单价(实数)、销售量(实数)。成员函数包括构造函数、计算销售额函数bill()和输出商品信息函数show(). 现在决定部分商品打折,需要计算打折商品的销售额(商品单价销售量折扣率)。因此需要从sale类派生一个折扣销售类discountSale,新增数据成员折扣率(实数),成员函数包括构造函数、计算销售额函数bill()和输出商品信息函数show(). 每位顾客购买的商品可能有打折的商品,也可能没有打折的商品,需要计算该顾客所购商品的总金额。 请定义sale类和discountSale类,并将main()函数补充完整。

int main() { sale *ps[20]; int n=0; //购买商品种数 string name; //商品名称 double price; //单价 double count; //销售量 double discount; //折扣率 int flag; while(cin>>flag) { if(flag==0) //不打折商品 { cin>>name>>price>>count; //补充完整 } else if(flag==1) //打折商品 { cin>>name>>price>>count>>discount; //补充完整 } } double total=0; for(int i=0;i<n;i++) { ps[i]->show(); //显示第i个商品信息 total+=ps[i]->bill(); //累计总金额 delete ps[i]; } cout<<"Total:"<<total<<endl; return 0; }

Input 输入数据有多行,代表一位顾客购买的多种商品。每一行代表一种商品的信息。 每行第一个整数为商品是否打折的标志。0代表不打折,1代表打折。 不打折商品信息包括商品名称、单价(实数)、销售量(实数)。 打折商品信息包括商品名称、单价(实数)、销售量(实数),折扣率(实数)。 具体格式见示例。

Output 输出每个商品的信息以及总金额。 不打折商品信息包括商品名称、单价(实数)、销售量(实数)、销售额(实数)。以”\t”隔开。 打折商品信息包括商品名称、单价(实数)、销售量(实数),折扣率(实数)、销售额(实数)。以”\t”隔开。 具体格式见示例。

Sample Input

0 apple 5.2 3 1 rice 3.5 2 0.85 0 pear 3 2 0 grape 8 1.5

Sample Output

apple 5.2 3 15.6 rice 3.5 2 0.85 5.95 pear 3 2 6 grape 8 1.5 12 Total:39.55

心得

比较基本的补充代码的题目,因为题目已经将类内该有的东西全部讲出来了,所以答题时只要按照要求来基本就没可能错了(毕竟主函数都全部出来了)。注意输出格式。

答案

#include <iostream> #include <string> using namespace std; class sale { protected: string name; double price,sales; public: sale() {} sale(string name,double price,double sales): name(name),sales(sales),price(price) {} virtual double bill() { return sales*price; } virtual void show() { cout<<name<<"\t"<<price<<"\t"<<sales<<"\t" <<bill()<<endl; } }; class discountSale:public sale { private: double count; public: discountSale(string name,double price,double sales,double count): sale(name,price,sales),count(count) {} double bill() { return sales*price*count; } void show() { cout<<name<<"\t"<<price<<"\t"<<sales<<"\t" <<count<<"\t"<<bill()<<endl; } }; int main() { sale *ps[20]; int n=0; //购买商品种数 string name; //商品名称 double price; //单价 double count; //销售量 double discount; //折扣率 int flag; while(cin>>flag) { if(flag==0) //不打折商品 { cin>>name>>price>>count; ps[n++]=new sale(name,price,count); } else if(flag==1) //打折商品 { cin>>name>>price>>count>>discount; ps[n++]=new discountSale(name,price,count,discount); } } double total=0; for(int i=0; i<n; i++) { ps[i]->show(); //显示第i个商品信息 total+=ps[i]->bill(); //累计总金额 delete ps[i]; } cout<<"Total:"<<total<<endl; return 0; }
转载请注明原文地址: https://www.6miu.com/read-47579.html

最新回复(0)