error 不能将参数1由int [2][6]"转换为"int **
//装配线调度#include<stdio.h>intFASTEST_WAY(int**a,int**t,int*e,int*x,int*f1,int*f2,int*l1...
//装配线调度
#include <stdio.h>
int FASTEST_WAY(int**a,int**t,int*e,int*x,int*f1,int*f2,int*l1,int*l2,int f,int l)
{
f1[0]=e[0]+a[0][0];
f2[0]=e[1]+a[1][0];
for(int j=1;j<6;j++)
{
if(f1[j-1]+a[0][j]<=f2[j-1]+t[1][j-1]+a[0][j])
{
f1[j]=f1[j-1]+a[0][j];
l1[j]=1;
}
else
{
f1[j]=f2[j-1]+t[1][j-1]+a[0][j];
l1[j]=2;
}
if(f2[j-1]+a[1][j]<=f1[j-1]+t[0][j-1]+a[1][j])
{
f2[j]=f2[j-1]+a[1][j];
l2[j]=2;
}
else
{
f2[j]=f1[j-1]+t[0][j-1]+a[1][j];
l2[j]=1;
}
}
if (f1[5]+x[0]<=f2[5]+x[1])
{
f=f1[5]+x[0];
l=1;
}
else
{
f=f2[5]+x[1];
l=2;
}
return l;
}
void PRINT_STATION(int l,int*l1,int*l2)
{
int n=6;
printf("line %d,station 6",l);
for(int i=4;i<=0;i--)
printf("line %d,station %d",(l%2!=0?l1[i]:l2[i]),--n);
}
void main ()
{
int a[2][6]={{7,9,3,4,8,4},{8,5,6,4,5,7}};
int t[2][5]={{2,3,1,3,4},{2,1,2,2,1}};
int e[2]={2,4};
int x[2]={3,2};
int n=6;
int f1[6]={0},f2[6]={0};
int l1[5]={0},l2[5]={0};
int f=0,l=0;
l=FASTEST_WAY(a,t,e,x,f1,f2,l1,l2,f,l);
PRINT_STATION(l,l1,l2);
}
速求高人解答啊! 展开
#include <stdio.h>
int FASTEST_WAY(int**a,int**t,int*e,int*x,int*f1,int*f2,int*l1,int*l2,int f,int l)
{
f1[0]=e[0]+a[0][0];
f2[0]=e[1]+a[1][0];
for(int j=1;j<6;j++)
{
if(f1[j-1]+a[0][j]<=f2[j-1]+t[1][j-1]+a[0][j])
{
f1[j]=f1[j-1]+a[0][j];
l1[j]=1;
}
else
{
f1[j]=f2[j-1]+t[1][j-1]+a[0][j];
l1[j]=2;
}
if(f2[j-1]+a[1][j]<=f1[j-1]+t[0][j-1]+a[1][j])
{
f2[j]=f2[j-1]+a[1][j];
l2[j]=2;
}
else
{
f2[j]=f1[j-1]+t[0][j-1]+a[1][j];
l2[j]=1;
}
}
if (f1[5]+x[0]<=f2[5]+x[1])
{
f=f1[5]+x[0];
l=1;
}
else
{
f=f2[5]+x[1];
l=2;
}
return l;
}
void PRINT_STATION(int l,int*l1,int*l2)
{
int n=6;
printf("line %d,station 6",l);
for(int i=4;i<=0;i--)
printf("line %d,station %d",(l%2!=0?l1[i]:l2[i]),--n);
}
void main ()
{
int a[2][6]={{7,9,3,4,8,4},{8,5,6,4,5,7}};
int t[2][5]={{2,3,1,3,4},{2,1,2,2,1}};
int e[2]={2,4};
int x[2]={3,2};
int n=6;
int f1[6]={0},f2[6]={0};
int l1[5]={0},l2[5]={0};
int f=0,l=0;
l=FASTEST_WAY(a,t,e,x,f1,f2,l1,l2,f,l);
PRINT_STATION(l,l1,l2);
}
速求高人解答啊! 展开
3个回答
展开全部
静态创建的二维数组a[2][6]、t[2][5],对应的数组名a和t实际上不是int **类型的指针!这一点很多初学者都容易弄混了,把FASTEST_WAY函数的参数列表改成:
int FASTEST_WAY(int a[][6],int t[][5],int*e,int*x,int*f1,int*f2,int*l1,int*l2,int f,int l)
或者:
int FASTEST_WAY(int (* a)[6],int (*t)[5],int*e,int*x,int*f1,int*f2,int*l1,int*l2,int f,int l)
就可以了
int FASTEST_WAY(int a[][6],int t[][5],int*e,int*x,int*f1,int*f2,int*l1,int*l2,int f,int l)
或者:
int FASTEST_WAY(int (* a)[6],int (*t)[5],int*e,int*x,int*f1,int*f2,int*l1,int*l2,int f,int l)
就可以了
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
l=FASTEST_WAY((int**)a,(int**)t,e,x,f1,f2,l1,l2,f,l);
可以编译通过,不过我运行了一下,程序有问题会报错,估计内存越界。
可以编译通过,不过我运行了一下,程序有问题会报错,估计内存越界。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
二维数组的传参至少要给出第二维的长度,你要好好查查二维数组的传参技巧。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询