Мой код строит матричный калькулятор. У меня есть массив матриц, функция для построения матрицы, которая получает указатель на требуемую матрицу (один из 6) и указатель на массив параметров для входа в матрицу. другая функция - print_mat для печати матрицы.
Проблема в том, что у меня есть эти матрицы: MAT_A, MAT_B ...... MAT_F.
когда я вводил параметры в MAT_X, он также показывал om MAT_X-1. например - если я добавлю параметры в MAT_B, то каким-нибудь образом обновится MAT_A.
MAT type definition: typedef double MAT[N][N];
MAT array: MAT matrices[6];
printing matrix function:
void print_mat(MAT * mat1){
int i=0,j=0;
printf("the matrix is:\n\n");
for(i=0;i<N;i++){
for (int j = 0; j < N ; ++j){
printf("%.2f ",*mat1[i][j]);
if (j==N-1) /* end of line, last parameter on this line so move to the next one */
printf("\n");
}
}
}
положить параметры в матричной функции:
void read_mat (MAT *mat1 , double * parameters){
int i=0,j=0,index=0;
for(i=0;i<N;i++){
for (int j = 0; j < N ; ++j){
*(mat1)[i][j]=parameters[index];
index++;
}
}
}
Как я вызываю функции для использования: (соответствующие случаи - это случаи 0 и 1)
void execute(MAT *matrices,int *parameters, double *scalars, int command_index){
switch (command_index){
case 0:
read_mat(&matrices[parameters[0]],scalars);
break;
case 1:
print_mat(&matrices[parameters[0]]);
break;
case 2:
add_mat(&matrices[parameters[0]],&matrices[parameters[1]],&matrices[parameters[2]]);
break;
case 3:
sub_mat(&matrices[parameters[0]],&matrices[parameters[1]],&matrices[parameters[2]]);
break;
case 4:
mul_mat(&matrices[parameters[0]],&matrices[parameters[1]],&matrices[parameters[2]]);
break;
case 5:
mul_scalar(&matrices[parameters[0]],scalars,&matrices[parameters[1]]);
break;
case 6:
trans_mat(&matrices[parameters[0]],&matrices[parameters[1]]);
break;
default: /* stop command */
stop();
break;
}
}
команда: read_mat MAT_B, 1,2,3456, -7,89
команда: print_mat MAT_B
результат:
матрица: // (MAT_B)
1,00 2,35 -7,89 0,00
0,00 0,00 0,00 0,00
0,00 0,00 0,00 0,00
0,00 0,00 0,00 0,00
но в то же время MAT_A:
команда: print_mat MAT_A
0,00 0,00 0,00 0,00
1,00 2,35 -7,89 0,00
0,00 0,00 0,00 0,00
0,00 0,00 0,00 0,00
(пока должны быть все нули)