C++利用一维数组求解线性方程组
在上一篇我们学习了C++利用二维数组求解线性方程组
,今天我们来学习一维数组,我们知道数组占用的是内存里连续的一片存储空间,那么用二维数组能解决的问题,用一维数组能解决吗?答案是肯定的。
首先我们来分析一下,假如有一个三行三列的二维数组a[3][3],和一个拥有9个元素的一维数组b[9],a数组和b数组内的所有元素均赋值为0,再将a和b均按3阶矩阵的方式输出,那我们可以想到,每行应该输出三个数,再依次进行换行输出。
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int a[3][3] = {
0};
int b[9] = {
0};
cout<<endl<<"-------按三阶矩阵形式输出a-------"<<endl;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
cout<<a[i][j]<<"\t";
}
cout<<endl;
}
cout<<endl<<"-------按三阶矩阵形式输出b-------"<<endl;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
//输出矩阵第i行第j列的元素
//不难想象矩阵的第i行第j列的元素在b中相当于第i*3+j个元素
//i*3+j:因为每行3个元素
cout<<b[i*3+j]<<"\t";
}
cout<<endl;
}
cout<<endl;
system("pause");
return 0;
}
由以上的思想可知,一个一维数组,我们可以将其以二维数组的形式输出,即输出b[i*m+j]——对应二维数组第i行第j列的元素,m是每一行的元素的个数。
有了以上的思考,我们便可以使用一维数组来解决上一篇求解线性方程组的问题。
代码如下
#include "stdafx.h"
#include <iostream>
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
const