矩阵计算器错误-无法正常运行

时间:2019-05-15 13:18:27

标签: c pointers debugging matrix

我的代码正在构建矩阵计算器。我有一个矩阵数组,一个用于构建矩阵的函数,该函数获取指向所需矩阵的指针(6个之一)和指向要输入矩阵的参数数组的指针。另一个功能是print_mat以打印矩阵。

问题是:我有以下矩阵:MAT_A,MAT_B ...... MAT_F。 当我向MAT_X输入参数时,它也显示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

(应该全为零)

1 个答案:

答案 0 :(得分:2)

如果您想收到import pandas as pd import html5lib import lxml from bs4 import BeautifulSoup import requests site = 'https://etfdb.com/themes/smart-beta-etfs/#complete-list&sort_name=assets_under_management&sort_order=desc&page=1' page1 = requests.get(site, proxies = proxy_support) page1 page1.status_code page1.text from bs4 import BeautifulSoup soup = BeautifulSoup(page1.text, 'html.parser') print(soup) print(soup.prettify()) table = soup.find_all("div", class_ = "fixed-table-body") table ,则需要

MAT

代替

void print_mat(MAT mat1){ // same as void print_mat(double mat1[N][N]){

在这里

void print_mat(MAT * mat1){ // You don't want a pointer to a 2D array

您不想取消引用

printf("%.2f    ",*mat1[i][j]);

printf("%.2f ", mat1[i][j]);

相同