2021-07-16

水果榨汁沙拉

#include<iostream>

using namespace std;

class Fruit
{
public:
    double m_w;
    double weight(){return m_w;}
    Fruit(double w):m_w(w){}

};
class Juice
{
public:
    double m_j;
    virtual double juice_weight() = 0;
    Juice(double j):m_j(j){}

};
class Salad
{
public:
    double m_s;
    virtual double salad_weight() = 0;
    Salad(double s):m_s(s){}

};
class Peach: public Fruit, public Juice, public Salad
{
public:
    Peach(double w, double j,double s):Fruit(w),Juice(j),Salad(s){}

    double juice_weight()
    {
        return m_j*m_w*0.6;
    }
    double salad_weight()
    {
        return m_s*m_w*0.4;
    }
};
class Pineapple: public Fruit, public Juice
{
public:
    Pineapple(double w, double j):Fruit(w),Juice(j){}

    double juice_weight()
    {
        return m_j*m_w;
    }

};
class Banana: public Fruit, public Salad
{
public:
    Banana(double w, double s):Fruit(w),Salad(s){}

    double salad_weight()
    {
        return m_s*m_w;
    }

};
class Apple: public Fruit, public Juice, public Salad
{
public:
    Apple(double w, double j,double s):Fruit(w),Juice(j),Salad(s){}

    double juice_weight()
    {
        return m_j*m_w*0.6;
    }
    double salad_weight()
    {
        return m_s*m_w*0.4;
    }
};
int main()
{
    Fruit* fruit[100];
    Juice* juice[100];
    Salad* salad[100];

    string name;
    int cases, f, j, s;
    f = j = s = 0;
    cin >> cases;
    while(cases--)
    {
        cin >> name;
        double weight, s_ratio, j_ratio;
        if(name == "Peach")
        {
            cin >> weight >> j_ratio >> s_ratio;
            Peach* p = new Peach(weight, j_ratio, s_ratio);
            fruit[f++] = p;
            juice[j++] = p;
            salad[s++] = p;
        }
        if(name == "Pineapple")
        {
            cin >> weight >> j_ratio;
            Pineapple* p = new Pineapple(weight, j_ratio);
            fruit[f++] = p;
            juice[j++] = p;
        }
        if(name == "Banana")
        {
            cin >> weight >> s_ratio;
            Banana* b = new Banana(weight, s_ratio);
            fruit[f++] = b;
            salad[s++] = b;
        }
        if(name == "Apple")
        {
            cin >> weight >> j_ratio >> s_ratio;
            Apple* a = new Apple(weight, j_ratio, s_ratio);
            fruit[f++] = a;
            juice[j++] = a;
            salad[s++] = a;
        }
    }

    double fruit_weight, salad_weight, juice_weight;
    fruit_weight = salad_weight = juice_weight = 0;
    for(int i = 0; i < f; i++)
        fruit_weight += fruit[i]->weight();
    cout << "All fruits weight " << fruit_weight << " kg." << endl;
    for(int i = 0; i < j; i++)
        juice_weight += juice[i]->juice_weight();
    cout << "These fruits can juicing " << juice_weight << " kg fruit juice." << endl;
    for(int i = 0; i < s; i++)
        salad_weight += salad[i]->salad_weight();
    cout << "These fruits can making " << salad_weight << " kg fruit salad." << endl;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值