首页 > 解决方案 > 矩阵加法(从字符串中获取矩阵名称)

问题描述

我正在尝试制作矩阵加法功能,但问题不在于加法。问题出在字符串中,使用输入命令,我必须检查一切是否正常。对于矩阵加法,我需要为输入获取 3 个矩阵名称。

我做了一个查找名称的算法,另一个检查矩阵名称(如果已定义)并保存为“matInd”的函数。我已将所有 matInd 保存在一个数组中。现在我需要调用 add_mat 函数进行操作,但是 add_mat 函数必须获取 3 个参数:double add_mat(double MAT1[N][N], double MAT2[N][N], double MAT3[N][N] ])

现在我不知道如何将 matInd 更改为 Matrix 名称来调用该函数。

也许我需要以另一种方式来做?

数学:

/* Data Structure */
typedef double mat[N][N];

矩阵名称:MAT_A、MAT_B、MAT_C、MAT_D、MAT_E、MAT_F

mymat.c:

/* Declare matrix and initialize to zero */
mat MAT_A = {0}, MAT_B = {0}, MAT_C = {0}, MAT_D = {0}, MAT_E = {0}, MAT_F = {0};
            case ADD_MAT:
                printf("add mat..\n");
                int i = 0;
                index = skip_white_char(command, index, commandLen);
                if(is_comma(command[index])){
                    print_error(ILLEGAL_COMMA);
                    continue;
                }
                if(command[index]=='\n'){
                    print_error(MISS_PARAM);
                    continue;
                }

                clear_word(nextWord, MAX_WORD_LEN); /* Clear last word from nextWord */
                index = get_word(command, nextWord, index);
                matInd = which_mat(nextWord); /* Save the index of chosen mat */
                if(matInd == UNKNOWN_MAT){
                    print_error(UNDEF_MAT_NAME);
                    continue;
                }
                else {
                    printf("%d ", matInd);
                    matrixMan[i++] = matInd;
                }

                while(is_comma(command[index])){
                    index++;
                    index = skip_white_char(command, index, commandLen);
                    if(is_comma(command[index])){
                        print_error(ILLEGAL_COMMA);
                        continue;
                    }
                    if(command[index]=='\n'){
                        print_error(MISS_PARAM);
                        continue;
                    }
                    clear_word(nextWord, MAX_WORD_LEN); /* Clear last word from nextWord */
                    index = get_word(command, nextWord, index);
                    matInd = which_mat(nextWord); /* Save the index of chosen mat */
                    if(matInd == UNKNOWN_MAT){
                        print_error(UNDEF_MAT_NAME);
                        continue;
                    }
                    else {
                        matrixMan[i++] = matInd;
                    }
                    index = skip_white_char(command, index, commandLen);
                }
                if(command[index]!='\n'){ /* There is parameters without comma between */
                    return MISS_COMMA;
                }

                continue;

标签: c

解决方案


推荐阅读