提问人:Yannis Ravasopoulos 提问时间:12/15/2022 最后编辑:Yannis Ravasopoulos 更新时间:12/19/2022 访问量:50
为什么该函数不将值返回给另一个变量,而不是用作操作数的变量?
Why doesn't the function return a value to another variable than the one used as operand?
问:
我正在制作一个高斯消元程序,我使用的函数以静态数组的形式应用于矩阵,该矩阵是结构体 MATRIX 的成员。我想将矩阵的新消除行梯队形式作为新的结构变量返回。设 1 是我设置要消除的矩阵,我想使矩阵 2 保持矩阵的 1 行梯队形式。
这是包含静态变量数量的结构定义(我已将其设置为):struct matrix MATRIX[10]
struct matrix{
float array[k][l];
char line[k];
char column[l];
int inversity;
};
这是功能段:
float gauss(struct matrix MATRIX[],int n){
int row=0,flag=0;
while(row<k){
//LEFTMOST NON-ZERO COLUMN ID
int j=0,cid,rid;
flag=0;
while((j<l)&&(flag!=1)){
int i=row;
//printf("i value is: %d\n",i);
while((i<k)&&(flag!=1)){
if(MATRIX[n].array[i][j]!=0){
flag=1;
cid=j;
rid=i;
}
i++;
}
j++;
}//printf("Leftmost column with at least a non-zero char is: %d and its location is: %d,%d\n",cid,cid,rid);
//SWAPPING WITH CEILING ROW
if(flag!=0)
for(int j=0; j<l; j++){
float temp=MATRIX[n].array[rid][j];
MATRIX[n].array[rid][j]=MATRIX[n].array[row][j];
MATRIX[n].array[row][j]=temp;
}
//printf("Swapping done:\n"); printmatrix(MATRIX,1);
//SETTING LEAD 1
float temp=MATRIX[n].array[row][cid];
if(temp!=0){
for(int j=0; j<l; j++){
MATRIX[n].array[row][j]/=temp;
}
}//printf("Set lead:\n"); printmatrix(MATRIX,1);
//OPERATION SEGMENT
for(int i=(row+1); i<k; i++){
float temp=MATRIX[n].array[i][cid];
//printf("temp is %.2f\n",temp);
for(int j=0; j<l; j++){
//printf("sub factor is %.2f\n",(-1*temp*MATRIX[n].array[row][j]));
MATRIX[n].array[i][j]+=(-1*temp*MATRIX[n].array[row][j]);
}//printmatrix(MATRIX,1);
}//printf("Done operations:\n"); printmatrix(MATRIX,1);
row++;
}
for(int i=0; i<k; i++)
for(int j=0; j<l; j++)
if(MATRIX[n].array[i][j]==(-1*0)) MATRIX[n].array[i][j]=0;
printf("Done final operations:\n"); printmatrix(MATRIX,n);
return MATRIX[n+1].array[k][l];
}
之后,我使用以下命令将新矩阵分配给新的结构变量:
MATRIX[n+1].array[k][l]=gauss(MATRIX,rem);
答: 暂无答案
评论
return MATRIX[+].array[k][l];
这是否与 ?+
gauss(MATRIX[n].array[][]) = MATRIX[n+1].array[][]
不能赋值给函数的返回值。请编辑您的问题,并使用示例说明您想要实现的目标。72
4
[]
[]
MATRIX[n].array[][]