洗刷刷5——商品销售

来源:互联网 发布:淘宝涂鸦书籍 编辑:程序博客网 时间:2024/05/01 21:47
商店销售某一商品,每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,一次购10件以上者,还可以享受9.8折优惠。现已知当天m个销货员销售情况为

销货员号(num) 销货件数(quantity) 销货单价(price)

101 5 23.5

102 12 24.56

103 100 21.5 

已经给出程序,计算出当日此商品的总销售款sum以及每件商品的平均售价。要求用静态数据成员和静态成员函数。
(提示: 将折扣discount,总销售款sum和商品销售总件数n声明为静态数据成员,再定义静态成员函数average(求平均售价)和display(输出结果)。
void Praduct::total()  {      int rate=1;      if(quantity>10) rate=0.98*rate;      sum=quantity*price*rate*(1-discount);      n=n+quantity;  }   ********************************/   void Product::display()  {      cout<<sum<<endl;      cout<<ave()<<endl;  }      float Product::ave()  {      return(sum/n);  }  float Product::discount=0.05; float Product::sum=0; int Product::n=0;   int main() {     const int NUM =10;     Product Prod[10];     int m,i;     cin>>m;     int num;     int quantity;     float price;     for(i=0; i<m; i++)     {         cin>>num>>quantity>>price;         Product temp(num,quantity,price);         Prod[i]=temp;     }     for(i=0; i<m; i++)         Prod[i].total();     cout<<setiosflags(ios::fixed);     cout<<setprecision(2);     Product::display();     return 0; }

改正:
#include <iostream>#include <iomanip>using namespace std;class Product{public:    Product(){}    Product(int n,int q,float p):num(n),quantity(q),price(p){};    void total();    static float ave();    static void display();private:    int num;    int quantity;    float price;    static float discount ;    static float sum;    static int n;};void Product::total(){    float rate=1;          //int改为float    if(quantity>10)        rate=0.98*rate;    sum=sum+quantity*price*rate*(1-discount);  //注意sum+    n=n+quantity;}float Product::ave(){    return (sum/n);}void Product::display(){    cout<<sum<<endl;    cout<<ave()<<endl;}float Product::discount=0.05;float Product::sum=0;int Product::n=0;int main(){    const int NUM=10;    Product Prod[10];    int m,i;    cin>>m;    int num;    int quantity;    double price;    for(i=0; i<m; i++)    {        cin>>num>>quantity>>price;        Product temp(num,quantity,price);        Prod[i]=temp;    }    for(i=0; i<m; i++)        Prod[i].total();    cout<<setiosflags(ios::fixed);    cout<<setprecision(2);    Product::display();    return 0;}

运行结果:

学习总结:
今天下午刷oj还算比较顺利,但是这个题把我弄得都要疯了,提交了好几次编译错误,最后终于知道只是很小的错误 int与float。总之以后做题还是要静下心来,一点一点看,肯定能发现错误。
0 0
原创粉丝点击