该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有24斤油,有13,11,5斤三种规格容器(隐藏条件有24斤容器),但没有刻度,要求用C编程实现3等分。目前已经写了部分,但是有点问题,不知道怎么修改,求达人帮忙解决,感激不尽~!!现附录程序:
#include
#define Maxsize 81
struct bucket
{
int data[4]; /*储存各桶盛油量*/
int last; /*索引下标*/
}queue[Maxsize];
void main()
{
int full[4];
int i,j,k,t,x,y,v;
int found=0,unable=0;
int front=0,rear=0;
/*输入各桶最大容量*/
printf("请从大到小输入4个容器容量:\n");
for(i=0;i<4;i++)
scanf("%d",&full[i]);
if(full[0]
printf("你输入的数据有误!\n");
/*输入各桶原始盛容量*/
printf("请从大到小输入4个容器的原始盛油量:\n");
for(i=0;i<4;i++)
{
scanf("%d",&queue[0].data[i]);
if(full[i]
{
printf("你输入的数据有误!\n");
break;
}
}
int z=queue[0].data[0]+queue[0].data[1]+queue[0].data[2]+queue[0].data[3];
queue[0].last=0;/*初始化索引*/
while(!found&&!unable); /*既没找到解又没确定无解条件下循环*/
{
/*在满足条件下对数组中第一个未检查的存油状态进行所有可能的情况倒油,并将出现的新的存油状态存入数组尾*/
for(i=0;i<4&&!found&&!unable;i++)
if(queue[front].data[i]>0) /*倒出桶有油*/
for(j=0;j<4&&!found&&!unable;j++)
if(j!=i&&queue[front].data[j]
{
/*确定本次倒油量*/
if(queue[front].data[i]>full[j]-queue[front].data[j])