分油问题与编程C++,,高分悬赏 要有解释 详细点

2. 有三个油瓶子,容量分别为10斤、7斤、3斤。初始时,10斤瓶是满的,7斤和3斤瓶是空的。如何将油分成两个5斤?

下面是小王和小明的对话:

小王:分油问题是一个古典数学问题。这个题可以这样做,10斤倒7斤,7斤倒3斤,3斤倒10斤,7斤倒3斤,3斤倒10斤,7斤倒3斤,10斤倒7斤,7斤倒3斤,3斤倒10斤。这时,10斤瓶和7斤瓶,就是各装5斤。

小明:也不知道你的分法对不对?

小王:我的分法肯定对!

小明:就算你对。我再问你:有三个油瓶子,容量分别为100斤、27斤、15斤。初始时,100斤瓶是满的,27斤和15斤瓶是空的。现在100斤倒15斤,15斤倒27斤,100斤倒15斤,15斤倒27斤,27斤倒100斤,15斤倒27斤,100斤倒15斤,15斤倒27斤,100斤倒15斤,15斤倒27斤,这时15斤瓶里装的是多少?

现请你用面向对象程序设计方法,分析上述文字,最后编写程序,验证小王分油方法的正确性,以及给出小明所提问题的答案。

具体要求:
1)找出相关的类,并给出相应的类定义和实现。
2)请编写一个应用程序,利用1)中的类,验证小王分法的正确性,并帮小王回答小明提出的问题。

第1个回答  2012-06-02
第一个题:
#include <iostream>
using namespace std;
class Bottle//3个瓶子类
{
private:
int a; //a----10L的瓶子
int b; //b----7L的瓶子
int c; //c----3L的瓶子
public:
Bottle()
{

}
Bottle(int x,int y,int z)
{
a = x;
b = y;
c = z;
}

//下面是6个倒油的函数

void fun_1()//a向b中倒油
{
if(a>=(7-b))//如果a中的油量大于b中需要的油量,那么就可以把b倒满。
{
a = a-(7-b);
b = 7;
}
if(a<(7-b))//如果a中的油量小于b中需要的油量,那么a将要倒空。
{
b = b+a;
a = 0;
}
}
//以下的注释和上一个差不多,就不写了

void fun_2()//a向c中倒油
{
if(a>=(3-c))
{
a = a-(3-c);
c = 3;
}
if(a<(3-c))
{
c = c+a;
a = 0;
}
}
void fun_3()//b向a中倒油
{
if(b>=(10-a))
{
b = b-(10-a);
a= 10;
}
if(b<(10-a))
{
a = a+b;
b = 0;
}
}
void fun_4()//b向c中倒油
{
if(b>=(3-c))
{
b = b-(3-c);
c = 3;
}
if(b<(3-c))
{
c = c+b;
b = 0;
}
}
void fun_5()//c向a中倒油
{
if(c>=(10-a))
{
c = c-(10-a);
a = 10;
}
if(c<(10-a))
{

a = a+c;
c = 0;
}
}
void fun_6()//c向b中倒油
{
if(c>=(7-b))
{
c = c-(7-b);
b = 7;
}
if(c<(7-b))
{
b = b+c;
c = 0;
}
}

void disp()//显示
{
cout<<"a = "<<a<<", "<<"b = "
<<b<<", "<<"c = "
<<c<<endl;
}
};
void main()
{
int a = 10,b = 0,c = 0;
Bottle obj(a,b,c);

obj.fun_1();
obj.fun_4();
obj.fun_5();
obj.fun_4();
obj.fun_5();
obj.fun_4();
obj.fun_1();
obj.fun_4();
obj.fun_5();
obj.disp();
}

第二题:
答案是:15L的瓶子里装的是6L油。
源代码:
#include <iostream>
using namespace std;
class Bottle
{
private:
int a; //a----100L的瓶子
int b; //b----27L的瓶子
int c; //c----15L的瓶子
public:
Bottle()
{

}
Bottle(int x,int y,int z)
{
a = x;
b = y;
c = z;
}

//下面是6个倒油的函数

void fun_1()//a向b中倒油
{
if(a>=(27-b))//如果a中的油量大于b中需要的油量,那么就可以把b倒满。
{
a = a-(27-b);
b = 27;
}
if(a<(27-b))//如果a中的油量小于b中需要的油量,那么a将要倒空。
{
b = b+a;
a = 0;
}
}
//以下的注释和上一个差不多,就不写了

void fun_2()//a向c中倒油
{
if(a>=(15-c))
{
a = a-(15-c);
c = 15;
}
if(a<(15-c))
{
c = c+a;
a = 0;
}
}
void fun_3()//b向a中倒油
{
if(b>=(100-a))
{
b = b-(100-a);
a= 100;
}
if(b<(100-a))
{
a = a+b;
b = 0;
}
}
void fun_4()//b向c中倒油
{
if(b>=(15-c))
{
b = b-(15-c);
c = 15;
}
if(b<(15-c))
{
c = c+b;
b = 0;
}
}
void fun_5()//c向a中倒油
{
if(c>=(100-a))
{
c = c-(100-a);
a = 100;
}
if(c<(100-a))
{

a = a+c;
c = 0;
}
}
void fun_6()//c向b中倒油
{
if(c>=(27-b))
{
c = c-(27-b);
b = 27;
}
if(c<(27-b))
{
b = b+c;
c = 0;
}
}

void disp()//显示
{
cout<<"c = "<<c<<endl;
}
};
void main()
{
int a = 100,b = 0,c = 0;
Bottle obj(a,b,c);

obj.fun_2();
obj.fun_6();
obj.fun_2();
obj.fun_6();
obj.fun_3();
obj.fun_6();
obj.fun_2();
obj.fun_6();
obj.fun_2();
obj.fun_6();
obj.disp();

}

分油问题与编程C++,,高分悬赏 要有解释 详细点
void fun_1()\/\/a向b中倒油 { if(a>=(7-b))\/\/如果a中的油量大于b中需要的油量,那么就可以把b倒满。{ a = a-(7-b);b = 7;} if(a<(7-b))\/\/如果a中的油量小于b中需要的油量,那么a将要倒空。{ b = b+a;a = 0;} } \/\/以下的注释和上一个差不多,就不写了 void...

...不要用专业术语,我看不懂。更不许复制,高分悬赏
1,上市大盘、深市成分大盘中的白线和黄线,分别代表什么?简单通俗的的说白线就代表指标股,它们也就是代表指数。指标股票大部分都是股本比较大的股和业绩比较好的蓝筹股票。比如说什么中国石油,工商银行之类的股票。黄线代表普通个股。所以你会经常见到黄线和白线有时候离得比较远。比如说,当你看到白线...

100分高分悬赏!描绘事情更有趣
自嘲,能制造宽松和谐的交谈气氛,能使自己活得轻松洒脱,使人感到你的可爱和人情味,有时还能更有效地维护面子,建立起新的心理平衡。 2.公众人物更需要笑自己 人际交往中,身在高位者或明星大腕们,与人打交道容易让人感到有架子。可能是因为他人过于紧张、有压力,也可能是这些人还没有摸着与普通人相处的窍门。通常...

々高分悬赏々男生怎么长好女生的歌
唱歌一定要有自己的风格,我想这一点我不用多加解释,还有一点就是不要刻意的去改原来的音,原本该多高唱就多高唱不要刻意升降,这样第一油,第二原来的曲目特色容易被你盖过去。唱歌时咬字一定要清晰、准确,有的音如果太高,可以用假音唱,效果也是不错的。不要模仿,男生不是女生,去领会歌曲的...

高分悬赏,破财求指教,本人在17K作品《尸鬼》,详情如下!
可能性原因如下:第一:签约因素。也就是说你签约时候晚了,你现在的字数是30+万。和人家5万就签约的应该有差别吧,必将读者不傻,看就看签约文。第二:更新问题。17K的流量高峰期,中午12~14点,晚7~9点,你的更新是不是很稳定自己应该知道。一般聪明点的作者会在凌晨12点更新,因为凌晨更新会在...

高分悬赏!高分悬赏!如何‘死不要脸’!帮帮我吧!
1、准备至少10个笑话,最好经典的,能逗人发笑的。2、先找熟人说一遍,看反应。3、再找其他熟人说一边,稍加点表演。4、找不是很熟的人讲笑话,逗乐他们。5、找女孩子讲笑话,一定要有一些幽默。6、找不太熟的人耍宝,失败了也没人介意。首先,必须先告诉你,你要端正一下自己的态度,不要只...

高分悬赏特别感人的故事!
他几年中就写了几网篮的读书札记,文学和思想修养水平提高很快。 徐特立读《联共党史》的时候,开始书店只出了上册,他就买了一本阅读。后来听说有了苏联版本的上下册,他就借了下册抄读,因为是节抄,就要做详细分析后再抄,结果,他对于《联共党史》下册的了解比上册深刻。于是,他再回来把上册节抄一次。由此,他又...

高分悬赏!
要学好,就得讲究科学的学习方法。所谓学习方法,就是人们在学习过程中所采用的手段和途径。它包括知识的方法,学习技能的方法,发展智力与培养能力的方法。 爱因斯坦总结自己获得伟大成就的公式是:W=X+Y+Z。并解释W代表成功,X代表刻苦努力,Y代表方法正确,Z代表不说空话。德国哲学家笛卡尔也曾说过:“最有价值的知识是...

高分悬赏 广告招贴 带文字说明800字以上
LZ,问题可不可以再具体一点,有点混淆啊!~ 有一个很好的网站,应该能帮到你,广告招贴很多,网站名称:顶尖文案! 招贴广告的构成要素可分为文字语言(verbal)和非文字语言(nonverbal)两部分。文字语言部分又包括标题(headline)、正文(body text)、标语(slogan)、商品名和公司名等,非文字语言部分又包括商标(trademark...

我决定减肥,高分悬赏好方法!
我决定减肥,高分悬赏好方法!减肥原理:人一天最低需要摄入1000大卡热量两餐代餐奶昔产生200大卡×2=400大卡普通正餐一餐约为600大卡三餐之和为1000大卡正常人消耗热量一天2000-2400大卡所缺少的1000-1400大卡就需

相似回答