代码就是运行不对,感觉有部分代码没有运行,大神求教!!

Hu_ganglalala 2018-09-15 08:21:34
#include<stdio.h>
#define N 8
#include<math.h>
long int zongt;
struct cnc
{
int ready; //状态判断量,1为正在工作
int loc; //位置参数 1-4
int num; //CNC加工过的材料数量
int tr; //RGV小车上下料时间
long int tq; //CNC加工材料所需时间
int t; //CNC自身携带的计时器
}cnc[9];


struct rgv
{
int ready; //状态判断量,1为正在工作
int loc; //位置参数 1-4
int tg; //RGV洗料的时间
int t; //RGV自身携带的计时器
int book;
}rgv={0,1,25,0,0};

int max(long int x,long int y)
{
if(x>y)
return x;
else
return y;
}

int loc(int x)
{
int t1=20,t2=33,t3=46;
switch(x)
{
case'0':return 0 ;
case'1':return t1;
case'2':return t2;
case'3':return t3;
};
return 0;
}

int main()
{
long int m,i,j,p,tam,ta[9];
struct cnc cnc[9]={{0,0,0,0,0,0},{0,1,0,28,560,0},
{0,1,0,31,560,0},{0,2,0,28,560,0},
{0,2,0,31,560,0},{0,3,0,28,560,0},{0,3,0,31,560,0},
{0,4,0,28,560,0},{0,4,0,31,560,0}};
printf("cnc[1]:%d %d %d %d %d %d\ncnc[2]:%d %d %d %d %d %d\ncnc[3]:%d %d %d %d %d %d\ncnc[4]:%d %d %d %d %d %d\ncnc[5]:%d %d %d %d %d %d\ncnc[6]:%d %d %d %d %d %d\ncnc[7]:%d %d %d %d %d %d\ncnc[8]:%d %d %d %d %d %d\n",
cnc[1].loc,cnc[1].num,cnc[1].ready,cnc[1].t,cnc[1].tq,cnc[1].tr,
cnc[2].loc,cnc[2].num,cnc[2].ready,cnc[2].t,cnc[2].tq,cnc[2].tr,
cnc[3].loc,cnc[3].num,cnc[3].ready,cnc[3].t,cnc[3].tq,cnc[3].tr,
cnc[4].loc,cnc[4].num,cnc[4].ready,cnc[4].t,cnc[4].tq,cnc[4].tr,
cnc[5].loc,cnc[5].num,cnc[5].ready,cnc[5].t,cnc[5].tq,cnc[5].tr,
cnc[6].loc,cnc[6].num,cnc[6].ready,cnc[6].t,cnc[6].tq,cnc[6].tr,
cnc[7].loc,cnc[7].num,cnc[7].ready,cnc[7].t,cnc[7].tq,cnc[7].tr,
cnc[8].loc,cnc[8].num,cnc[8].ready,cnc[8].t,cnc[8].tq,cnc[8].tr);
printf("rgv:%d %d %d %d %d\n",rgv.book,rgv.loc,rgv.ready,rgv.t,rgv.tg);

for(zongt=1;zongt<=28800;)
{
if(rgv.ready!=1)
{
for(j=1;j<=8;j++)
{
cnc[j].t++;
if(cnc[j].t==cnc[j].tq)
{
cnc[j].ready=0;
cnc[j].t=0;
};
m=max((cnc[j].tq-cnc[j].t),loc(abs(cnc[j].loc-rgv.loc)));
ta[j]=(m+cnc[j].tr+rgv.tg);
};
rgv.t++;
tam=ta[1];
for(i=1;i<=8;i++)
{
if(tam>ta[i])
{
tam=ta[i];
p=i;
};
};
cnc[p].num++;
rgv.loc=cnc[p].loc;
printf("目标工作台:%d 所需时间:%d s 该工作台已加工数:%d\n",p,tam,cnc[p].num);
rgv.loc=cnc[p].loc;
rgv.ready=1;
(rgv.book)++;
cnc[p].ready=1;
zongt+=tam;
}
else
{
cnc[1].t++;
cnc[2].t++;
cnc[3].t++;
cnc[4].t++;
cnc[5].t++;
cnc[6].t++;
cnc[7].t++;
cnc[8].t++;
rgv.t++;
for(j=1;j<=8;j++)
{
if(cnc[j].t==cnc[j].tq)
{
cnc[j].ready=0;
cnc[j].t=0;
};
};
if(rgv.t==rgv.tg)
{
rgv.ready=0;
rgv.t=0;
};
};
};
printf("总耗时为:%d\n",zongt);
return 0;
}

...全文
753 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_42860778 2018-09-17
  • 打赏
  • 举报
回复
单步跑一遭不就好了。。

总觉得有拼音命名。。那个zongt

真是逼死码农
Hu_ganglalala 2018-09-16
  • 打赏
  • 举报
回复
引用 16 楼 Slzde_sub 的回复:
你把abs 。改成 fabs

bu
昨晚终于弄好了。。
#include<stdio.h>
#include<math.h>
int zongt;
struct cnc //用结构体数组定义机床
{
int ready; //状态判断量,1为正在工作
int loc; //位置参数 1-4
int num; //CNC加工过的材料数量
int tr; //RGV小车上下料时间
int tq; //CNC加工材料所需时间
int t; //CNC自身携带的计时器
}cnc[9];


struct rgv //用结构体定义引导车
{
int ready; //状态判断量,1为正在工作
int loc; //位置参数 1-4
int tg; //RGV洗料的时间
}rgv;



int max(int x,int y) //寻找最大值函数
{
int z=0;
if(x>y)
z=x;
else
z=y;
return (z);
}

int loc(int r) //计算rgv用于移动的时间,r为rgv和某个cnc之间的位置参数的差
{
int t1=20,t2=33,t3=46,u=0; //t1~t3为对应移动1~3个单位所需要的时间
switch(r)
{
case 0:u=0;break;
case 1:u=t1;break;
case 2:u=t2;break;
case 3:u=t3;break;
};
return (u);
}


int main()
{
int loc(int r); //声明函数loc()
int max(int x,int y); //声明函数max
int m,q,i,j,p,k,tam,sum=59,ta[9];
struct cnc cnc[9]={{0,0,0,0,0,0},{1,1,0,28,560,296}, //结构体数组cnc参数初始化(人为将表1数据输入)
{1,1,0,31,560,268},{1,2,0,28,560,217},
{1,2,0,31,560,189},{1,3,0,28,560,138},{1,3,0,31,560,110},
{1,4,0,28,560,58},{1,4,0,31,560,31}};
struct rgv rgv={0,1,25}; //结构体rgv参数初始化
printf("cnc[1]:%d %d %d %d %d %d\ncnc[2]:%d %d %d %d %d %d\ncnc[3]:%d %d %d %d %d %d\ncnc[4]:%d %d %d %d %d %d\ncnc[5]:%d %d %d %d %d %d\ncnc[6]:%d %d %d %d %d %d\ncnc[7]:%d %d %d %d %d %d\ncnc[8]:%d %d %d %d %d %d\n",
cnc[1].loc,cnc[1].num,cnc[1].ready,cnc[1].t,cnc[1].tq,cnc[1].tr,
cnc[2].loc,cnc[2].num,cnc[2].ready,cnc[2].t,cnc[2].tq,cnc[2].tr,
cnc[3].loc,cnc[3].num,cnc[3].ready,cnc[3].t,cnc[3].tq,cnc[3].tr,
cnc[4].loc,cnc[4].num,cnc[4].ready,cnc[4].t,cnc[4].tq,cnc[4].tr,
cnc[5].loc,cnc[5].num,cnc[5].ready,cnc[5].t,cnc[5].tq,cnc[5].tr,
cnc[6].loc,cnc[6].num,cnc[6].ready,cnc[6].t,cnc[6].tq,cnc[6].tr,
cnc[7].loc,cnc[7].num,cnc[7].ready,cnc[7].t,cnc[7].tq,cnc[7].tr,
cnc[8].loc,cnc[8].num,cnc[8].ready,cnc[8].t,cnc[8].tq,cnc[8].tr);
printf("rgv:%d %d %d\n",rgv.loc,rgv.ready,rgv.tg);

for(zongt=0;zongt<=28800;)
{

for(j=1;j<=8;j++)
{
k=abs(cnc[j].loc-rgv.loc);
m=(max(cnc[j].tq-cnc[j].t,loc(k)));
ta[j]=(m+cnc[j].tr+rgv.tg);
};
tam=ta[1];
p=1;
for(i=1;i<=8;i++)
{
if(tam>ta[i])
{
tam=ta[i];
p=i;
};
};
cnc[p].num++;
rgv.loc=cnc[p].loc;
printf("目标工作台:%d 所需时间:%d s 该工作台已加工数:%d\n",p,tam,cnc[p].num);
rgv.ready=1;
cnc[p].ready=1;
zongt+=tam;
for(j=1;j<=8;j++)
{
cnc[j].t=tam+cnc[j].t;
if(cnc[j].t>=(cnc[j].tq+cnc[j].tr))
{
cnc[j].t+=tam;
cnc[j].ready=0;
cnc[j].t=(cnc[j].t-(cnc[j].tq+cnc[j].tr));
};
};
for(j=1;j<=8;j++)
{
if(cnc[j].t>=(cnc[j].tq+cnc[j].tr))
{
cnc[j].ready=0;
cnc[j].t=(cnc[j].t-(cnc[j].tq+cnc[j].tr));
};
};
};
for (j=1;j<=8;j++)
{
sum+=cnc[j].num;
};

printf("总耗时为:%d\n成料总数量:%d\n",zongt,sum);
return 0;
}





结果基本过的去吧

万分感谢!!!!
Hu_ganglalala 2018-09-15
  • 打赏
  • 举报
回复
引用 14 楼 Slzde_sub 的回复:
草。。知道错误了。。。我顺手把那个error改掉了 c语言里要用fabs 不能用abs
额,我之前就是在dev c++ 跑的,出来的结果就是和您一样。。好吧,估计是我算法有问题。。不应该是每次目标工作台都是0的。。所需时间也不对。。每次好像计算的那个ta[j]是一个定值,然后导致输出的就一直是一样的。。。这个问题是不是不属于编程上的问题了。。
Hu_ganglalala 2018-09-15
  • 打赏
  • 举报
回复
引用 9 楼 Slzde_sub 的回复:
稍等。。我只能用眼睛看

我只有一台mbp现在。。
我的注释可能不全,如果方便的话,我们可以微信或者QQ交流
Hu_ganglalala 2018-09-15
  • 打赏
  • 举报
回复
引用 9 楼 Slzde_sub 的回复:
稍等。。我只能用眼睛看

我只有一台mbp现在。。
好的,没事,我今晚估计要通宵了。。。时刻等着您!
Hu_ganglalala 2018-09-15
  • 打赏
  • 举报
回复
引用 6 楼 Slzde_sub 的回复:


我身边没有可调试的电脑

你把for循环的zongt<=288...什么的 改成zongt<=1试试

看看最后那句 。总耗时能不能输出

如果可以的话 。。。另说
额,还是不能输出那个总耗时。。。
Hu_ganglalala 2018-09-15
  • 打赏
  • 举报
回复
引用 6 楼 Slzde_sub 的回复:


我身边没有可调试的电脑

你把for循环的zongt<=288...什么的 改成zongt<=1试试

看看最后那句 。总耗时能不能输出

如果可以的话 。。。另说
好的,不管怎样,先把分给你,多谢啦!!!
Hu_ganglalala 2018-09-15
  • 打赏
  • 举报
回复
引用 3 楼 Slzde_sub 的回复:
单步跑一遭不就好了。。

总觉得有拼音命名。。那个zongt

真是逼死码农
你好,能给个联系方式,帮下忙吗,我们在做数学建模,跪谢。。
Hu_ganglalala 2018-09-15
  • 打赏
  • 举报
回复
额,我调试的时候就会出现这个
Hu_ganglalala 2018-09-15
  • 打赏
  • 举报
回复
用vc++6.0运行出来的结果是这样的,感觉主函数的循环就没有执行。。。。
Hu_ganglalala 2018-09-15
  • 打赏
  • 举报
回复
在线等,急!!!

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧