水果榨汁沙拉
#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;
}