代码就是运行不对,感觉有部分代码没有运行,大神求教!!
#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;
}