矩阵加法:使用二维数组表示矩阵,使用一维数组进行矩阵对应相加即可
// MatrixPlus.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <IOSTREAM>
#include <CSTDIO>
#include <CSTDLIB>
using namespace std;
void MatrixPlus(double A[], double B[], int m, int n, double C[])
{
int i;
for (i = 0; i < m * n; i++)
{
C[i] = B[i] + A[i];
}
}
int main(int argc, char* argv[])
{
double A[3][3] = {
{1.0, 2.0, 3.0},
{4.0, 5.0, 6.0},
{7.0, 8.0, 9.0}
};
double B[3][3] = {
{2.0, -2.0, 1.0},
{1.0, 3.0, 9.0},
{17.0, -3.0, 7.0}
};
int m = 3, n = 3, i, j;
double C1[3*3] = {0};
printf("矩阵A和B相加的结果为: \n");
// 二维不能传给一维 cannot convert parameter 1 from 'double [3][3]' to 'double []'
double A1[3*3] = {0};
for (i = 0; i < n*m; i++)
{
A1[i] = A[i/n][i%n];
}
// 二维转换一维
double C[3][3] = {0};
double B1[3*3] = {0};
for (i = 0; i < n*m; i++)
{
B1[i] = B[i/n][i%n];
}
MatrixPlus(A1, B1, m, n, C1);
// 一维转换二维
for (i = 0; i < n*m; i++)
{
C[i/n][i%n] = C1[i];
}
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
{
printf("%10.6f", C[i][j]);
}
printf("\n");
}
/*
for (i = 0; i < m*n; i++)
{
printf("%10.6f", C[i]);
}
*/
return 0;
}
矩阵A和B相加的结果为:
3.000000 0.000000 4.000000
5.000000 8.000000 15.000000
24.000000 5.000000 16.000000
出现问题:二维不能传给一维 cannot convert parameter 1 from 'double [3][3]' to 'double []'
解决:二维数组转换一维数组,一维数组转换二维数组打印结果。