Умножение матриц в целом - PullRequest
0 голосов
/ 14 июля 2020

Я написал программу для перемножения матриц. Для тестирования я ввел:

A [1 0, 0 1] and B=[2 2, 2 2]

Результат должен быть: [2 2, 2 2]. Однако я получил [2122123 2, 2 2]. Почему это происходит? Может быть, это адрес в хранилище?

#include <stdio.h>

int main(){
    int A[10][10], B[10][10], C[10][10];
    int n,m,r,s,k,sum,j,i=0;

    printf("Enter the number of rows and columns of first matrix\n");
    scanf("%d%d", &n,&m);
    getchar();
    printf("Enter values:\n");

    for(i=0; i<n;i++){
        for(j=0; j<m; j++){
            scanf("%d", &A[i][j]);
            getchar();
        }
    }

    printf("Enter the number of rows and columns of second matrix\n");
    scanf("%d%d", &r,&s);
    getchar();
    if ( m != r )
        printf("Matrices with entered orders can't be multiplied with each other.\n");

    else{
        printf("Enter values\n");
        for(i=0; i<r;i++){
            for(j=0; j<s; j++){
                scanf("%d", &B[i][j]);
                getchar();
            }
        }
    
        for(i=0; i<n; i++){
            for(j=0; j<s;j++){
                for(k=0;k<r; k++){
                    sum=sum+ A[i][k]*B[k][j];
                }
                C[i][j]=sum;
                sum=0;
            }
        }
        printf("Product of entered matrices:-\n");
        for(i=0; i<n;i++){
            for(j=0; j<s; j++){
                printf("%d\t",C[i][j] );
            }
            printf("\n");
        }
    }

    return 0;
}

В общем, я рассматриваю матрицы размерности nxm и rxs.

1 Ответ

3 голосов
/ 14 июля 2020

Строка int n,m,r,s,k,sum,j,i=0; не инициализирует sum как 0. Он устанавливает только i.

Установить sum = 0; немедленно перед l oop поверх k, а не после.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...