Chinaunix首页 | 论坛 | 博客
  • 博客访问: 17202
  • 博文数量: 5
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 65
  • 用 户 组: 普通用户
  • 注册时间: 2021-10-15 18:16
文章分类
文章存档

2021年(5)

我的朋友

分类: C/C++

2021-10-17 16:02:26

#include
#include


void matrix_print(int row, int col, float** mtx);
void matrix_mut(int row_a, int col_a, int col_b, float** a, float** b, float** c);


void matrix_print(int row, int col, float** mtx)
{
    int r = 0, c = 0;
    for (r = 0; r < row; r++)
    {
        for (c = 0; c < col; c++)
        {
            printf("%g ", *(*(mtx + r) + c));
        }
        printf("\n");
    }
}


void matrix_mut(int row_a, int col_a, int col_b, float** a, float** b, float** c)
{
    int i, j, k;
    for (i = 0; i < row_a; i++)
    {
        for (j = 0; j < col_b; j++)
        {
            float sum = 0;
            for (k = 0; k < col_a; k++)
            {
                sum += *(*(a + i) + k) * *(*(b + k) + j);
            }
            *(*(c + i) + j) = sum;
        }
    }
}
int main(void)
{
    int i, j;
    float** a, ** b, ** c;
    int row_a, col_a, row_b, col_b;


    printf("请输入矩阵A的行数,列数:\n");
    scanf("%d,%d", &row_a, &col_a);
    a = (float**)malloc(row_a * sizeof(float*));
    for (i = 0; i < row_a; i++)
        a[i] = (float*)malloc(col_a * sizeof(float));
    printf("请输入矩阵A:\n");
    for (i = 0; i < row_a; i++)
        for (j = 0; j < col_a; j++)
            scanf("%f", &a[i][j]);


    row_b = col_a;
    printf("请输入矩阵B的列数:\n");
    scanf("%d", &col_b);
    b = (float**)malloc(row_b * sizeof(float*));
    for (i = 0; i < row_b; i++)
        b[i] = (float*)malloc(col_b * sizeof(float));
    printf("请输入矩阵B:\n");
    for (i = 0; i < row_b; i++)
        for (j = 0; j < col_b; j++)
            scanf("%f", &b[i][j]);


    c = (float**)calloc(row_a, sizeof(float*));
    for (i = 0; i < row_a; i++)
        c[i] = (float*)calloc(col_b, sizeof(float));




    //    float a[2][3] = {{1,2,3}, {1,5,2}};
    //    float b[3][2]= {{1,2},{2,1},{3,1}};
    //    float d[2][2];


    matrix_mut(row_a, col_a, col_b, a, b, c);
    matrix_print(row_a, col_b, c);


    for (i = 0; i < row_a; i++)
        free(*(a + i));
    free(a);


    for (i = 0; i < row_b; i++)
        free(*(b + i));
    free(b);


    for (i = 0; i < row_a; i++)
        free(*(c + i));
    free(c);


    return 0;
}
阅读(1123) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~