| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4209 人关注过本帖
标题:求助:10L的瓶子装满水,再给你一个3L,一个7L的瓶子,分出2个5L的水!
取消只看楼主 加入收藏
chen_study
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-8-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
求助:10L的瓶子装满水,再给你一个3L,一个7L的瓶子,分出2个5L的水!
如题,手动分,我分得出来!
A为10L的瓶子,B为3L的瓶子,C为7L的瓶子:
A   B  C
10  0  0
3   0  7
3   3  4
6   0  4
6   3  1
9   0  1
9   1  0
2   1  7
2   3  5
5   0  5
这是手动倒得过程,用C++我想了半天不知道怎么写这个循环!
哪位大侠帮忙解决下!
不胜感激!
搜索更多相关主题的帖子: 瓶子 分出 
2009-09-08 08:21
chen_study
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-8-31
收藏
得分:0 
程序功能是,知道有3个瓶子,分别为10L 3L 7L
开始的时候,10L的装满水,3L和7L的空的.
最后的结果要分成2个5L,分别装入2个瓶子.
程序要求输出倒水的过程,过程中,各个瓶子中的水的量..
3个变量,为3个瓶子当前的水的量,,但每个变量又有界限!
我想弄个循环,就是弄不出来,帮帮忙!!
2009-09-08 14:49
chen_study
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-8-31
收藏
得分:0 
头绪是这样的
把3个瓶子由大到小从左到右排好



从左到右倒过去(单次倒水结束标志:倒出的瓶子空了或装进的瓶子满了)
循环至最右边的瓶子时,跳回至最左边的瓶子

整个循环的标志:3个瓶子中出现一个为5L的

整个程序最后一步:把另外2个瓶子里的果汁倒进一个瓶子中(容量大的那个)

伪代码我自己写出来,我自己都看不大明白

我是这样分析的,可我不知道怎么用C++代码来实现这个循环
谁帮忙处理下,我都搞了好久了!晕啊
2009-09-08 18:01
chen_study
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-8-31
收藏
得分:0 
条件控制我看明白了,,谢谢

现在还一个问题想请教下,这个变量定义跟初始化要怎么弄呢,

初始化我觉得是按题目给的初始化为 10 0 0


不过他们又有上限,我不知道怎么控制定义

麻烦了!


2009-09-09 08:47
chen_study
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-8-31
收藏
得分:0 
感谢了,我去写一下代码,有不懂的地方,麻烦你再帮我解决下!
呵呵
2009-09-09 11:59
chen_study
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-8-31
收藏
得分:0 
还是写不出来啊,循环控制条件怎么搞都搞不对,,,


好晕哪!
2009-09-09 14:19
chen_study
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-8-31
收藏
得分:0 
帮我看下这个代码

#include <iostream>
using namespace std;
 
class Bottel
{
public:
    Bottel(int capacity);
     
public:
    void FlowOut(Bottel* odj);
    int FlowIn(int Mete);
    int getMete();
    void Full();
     
private:
    int maxCapa;
    int theMete;
};
 
 
 
Bottel::Bottel(int capacity)
:maxCapa(capacity)
,theMete(0)
{
     
}
 
void Bottel::Full()
{
    theMete = maxCapa;
}
 
int Bottel::getMete()
{
    return theMete;
}
 
void Bottel::FlowOut(Bottel* obj)
{
    theMete = obj->FlowIn(theMete);
}
 
int Bottel::FlowIn(int Mete)
{
    if(theMete + Mete <= maxCapa)
    {
        theMete = theMete + Mete;
        return 0;
    }
    else
    {
        int Return = theMete + Mete - maxCapa;
        theMete = maxCapa;
        return Return;
    }
}
 
 
int main()
{
    Bottel* BArr[3];  
    BArr[0] = new Bottel(7);
    BArr[1] = new Bottel(3);
    BArr[2] = new Bottel(10);
     
    BArr[2]->Full();
     
    int i = 0;
    int tenMete = 0;
    int sevMete = 0;
     
    while(tenMete!=5)
    {
        if(sevMete!=5)
        {
            BArr[2]->FlowOut(BArr[0]);
            sevMete = BArr[0]->getMete();
        }
        else
        {
            BArr[1]->FlowOut(BArr[2]);
            tenMete = BArr[2]->getMete();
        }
         
        i = 0;
         
        while(sevMete!=0 && sevMete!=5)
        {
            BArr[i]->FlowOut(BArr[i+1]);
            tenMete = BArr[2]->getMete();
            sevMete = BArr[0]->getMete();
            
            i=(i+1)%2;
        }
         
         
    }
     
     
    return 0;
}
2009-09-09 14:51
chen_study
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-8-31
收藏
得分:0 
这个我看明白了!!

不过输入瓶子的顺序必须是 10 7 3  
输入10 3 7或其他顺序就不可以

这个有办法解决吗??

不过这个程序经你这么一些一说明..........牛

是在是太感谢,,,,,


2009-09-09 18:07
快速回复:求助:10L的瓶子装满水,再给你一个3L,一个7L的瓶子,分出2个5L的水!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012829 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved