【问题标题】:Problem adding two 4x4 matrices and printing the sum result in a new matrix in C添加两个 4x4 矩阵并将总和结果打印到 C 中的新矩阵时出现问题
【发布时间】:2023-04-11 08:35:02
【问题描述】:

有人可以帮帮我吗?

我需要对用户发送数据的两个矩阵求和,并将结果打印在一个新矩阵中。

我设法从两个数组中捕获了数据,但是当我尝试将两者相加时,代码没有打印总和,错误在哪里?

谢谢

#include <stdio.h>
#include <stdlib.h>

void sum(int *mat_A, int *mat_B, int *mat_C);

int main() {

    int mat_A[4][4];
    int mat_B[4][4];
    int mat_C[4][4];
    int i, j, value;

    printf("\nEnter integer values ​​for the elements of matrix A: \n");
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            printf("\nElement[%d][%d] = ", i, j);
            scanf_s("%d", &value);
            mat_A[i][j] = value;
        }
    }

    printf("\nEnter integer values ​​for the elements of matrix B: \n");
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            printf("\nElement[%d][%d] = ", i, j);
            scanf_s("%d", &value);
            mat_B[i][j] = value;
        }
    }

    calc_soma(*mat_A, *mat_B, *mat_C);

    printf("\nSum of matrices A with B: \n\n");
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            value = mat_C[i][j];
            printf("%d", value);
        }
        printf("\n");
    }

    return 0;
}

void sum(int *mat_A, int *mat_B, int *mat_C) {

    int i, j;
    int value;

    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            value = *mat_A + *mat_B;
            *mat_C = value;
        }
    }
}

【问题讨论】:

  • int *mat_A 是指向一维数组的指针,而不是二维数组。
  • 您没有在循环中更新mat_Amat_Bmat_C,因此您继续读取和写入所有数组的第一个元素。

标签: c matrix


【解决方案1】:

您需要将sum() 的参数声明为二维数组,而不是int *,后者是指向一维数组的指针。然后使用ij 作为数组索引。

您还使用错误名称 calc_soma 调用函数。

#include <stdio.h>
#include <stdlib.h>

void sum(int mat_A[4][4], int mat_B[4][4], int mat_C[4][4]);

int main() {

    int mat_A[4][4];
    int mat_B[4][4];
    int mat_C[4][4];
    int i, j, value;

    printf("\nEnter integer values for the elements of matrix A: \n");
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            printf("\nElement[%d][%d] = ", i, j);
            scanf_s("%d", &value);
            mat_A[i][j] = value;
        }
    }

    printf("\nEnter integer values for the elements of matrix B: \n");
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            printf("\nElement[%d][%d] = ", i, j);
            scanf_s("%d", &value);
            mat_B[i][j] = value;
        }
    }

    sum(mat_A, mat_B, mat_C);

    printf("\nSum of matrices A with B: \n\n");
    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            value = mat_C[i][j];
            printf("%d", value);
        }
        printf("\n");
    }

    return 0;
}

void sum(int mat_A[4][4], int mat_B[4][4], int mat_C[4][4]) {

    int i, j;
    int value;

    for (i = 0; i < 4; i++)
    {
        for (j = 0; j < 4; j++)
        {
            value = mat_A[i][j] + mat_B[i][j];
            mat_C[i][j] = value;
        }
    }
}

【讨论】:

  • aaah 是的,谢谢,所以在 sum 函数的参数中,我必须声明矩阵是 4x4。这些参数是否有任何方式是指针,或者对于这种类型的矩阵来说是不可行的?
猜你喜欢
  • 2016-04-22
  • 1970-01-01
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 2014-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多