C++利用二维数组求解线性方程组

今天给大家介绍二维数组,以下介绍来自二维数组百度百科

二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,类型说明符
数组名[常量表达式][常量表达式]。二维数组又称为矩阵,行列数相等的矩阵称为方阵。对称矩阵a[i][j] =
a[j][i],对角矩阵:n阶方阵主对角线外都是零元素。

那接下来我们就利用二维数组来解决实际数学问题——解线性方程组
废话不多说,直接上代码

#include "stdafx.h"
#include <iostream>
using namespace std;int _tmain(int argc, _TCHAR* argv[])
{const int m = 3;const int k = m+1;double arr[m][k] = {0};double n , sum , culminate = 1;double x[m];int i = 0, ra = 0, j;bool flag = 0;cout<<"请输入"<<m<<"个方程"<<m<<"个未知量的线性方程组的系数"<<endl<<endl;while (i < m){cout<<"请输入第"<<i+1<<"行的系数:"<<endl;for(int j = 0;j < k;j++)//cin输入流可检测空格,即一行可输入多个数字(用空格分隔)后按回车键,//会自动识别空格cin>>arr[i][j];cout<<endl;i++;}//判断方程组的类型for(int i = 0;i < m;i++){if(arr[i][k] != 0){flag = 1;break;}}//控制高斯消元法的循环次数(控制列)for(int i = 0;i < m-1;i++){//判断第arr[i][i]是否为0,若为0则与下面不为0的行进行交换if (arr[i][i] == 0){for (int j = i+1; j < m; j++){if(arr[j][i] != 0){double temp[k] = {};for (int r = 0; r < k; r++){temp[r] = arr[j][r];arr[j][r] = arr[i][r];arr[i][r] = temp[r];}}}}//控制行for(int j = i+1;j < m;j++){//获取比例值n = arr[j][i]/arr[i][i];for(int Col = 0;Col < k;Col++)arr[j][Col] = arr[j][Col]-n*arr[i][Col];}}//输出简化矩阵cout<<endl<<"-------矩阵化简为阶梯型矩阵-------"<<endl<<endl;for(int i = 0;i < m;i++){for(int j = 0;j < k;j++)cout<<arr[i][j]<<"\t";cout<<endl;}//求解方程组for (int i = 0; i < m; i++)for (int j = 0; j < k; j++)if(i == j)culminate *= arr[i][j];if (flag == 0 && culminate == 0)cout<<endl<<"-------线性方程组有多解-------"<<endl;if (flag == 0 && culminate != 0){cout<<endl<<"-------线性方程组有唯一解-------"<<endl;cout<<endl<<"-------线性方程组的解为-------"<<endl<<endl;x[m-1] = arr[m-1][k-1]/arr[m-1][m-1];for (int i = m -2; i >= 0 ; i--){sum = 0;for (int j = i+1; j < m; j++)sum += arr[i][j]*x[j];x[i] = (arr[i][k-1] - sum)/arr[i][i];}//输出解for(int i = 0;i < m;i++)cout<<"x"<<i+1<<" = "<<x[i]<<"\t"<<"\t";cout<<endl<<endl;}for (int i = 0; i < m; i++){for (j = 0; j < m; j++){if(arr[i][j] !=0){ra++;break;}}if(j == m-1 && arr[i][j] == 0){if(arr[i][k-1] != 0)cout<<endl<<"-------线性方程组无解!-------"<<endl;}}if (flag == 1 && ra < m)cout<<endl<<"-------线性方程组有多解!-------"<<endl;if (flag == 1 && ra == m){cout<<endl<<"-------线性方程组有唯一解-------"<<endl;cout<<endl<<"-------线性方程组的解为-------"<<endl<<endl;x[m-1] = arr[m-1][k-1]/arr[m-1][m-1];for (int i = m -2; i >= 0 ; i--){sum = 0;for (int j = i+1; j < m; j++)sum += arr[i][j]*x[j];x[i] = (arr[i][k-1] - sum)/arr[i][i];}//输出解for(int i = 0;i < m;i++)cout<<"x"<<i+1<<" = "<<x[i]<<"\t"<<"\t";cout<<endl<<endl;}system("pause");return 0;
}

这里我就不再多给代码做解释了,如有疑问可在评论区留言讨论

C++利用二维数组求解线性方程组相关推荐

  1. java二维数组水平翻转,C 语言 利用二维数组实现对输入的数组进行翻转

    C 语言 利用二维数组实现对输入的数组进行翻转(帮助理解对图像翻转编辑原理) /* ?输入几行几列数字和翻转方式,如: 3 4 0即代表3行4列,左右翻转: 6 5 1即代表6行5列,上下翻转. 输入 ...

  2. 利用二维数组实现一个矩阵类:Matrix

    利用二维数组实现一个矩阵类:Matrix.要求提供以下操作: (1)set(int row, int col, double value):将第row行第col列的元素赋值为value: (2)get ...

  3. 利用二维数组(double[])实现一个矩阵类:Matrix。要求提供以下方法:(1)set(int row, int col, double value):将第row行第col列的元素赋值为valu

    利用二维数组(double[])实现一个矩阵类:Matrix.要求提供以下方法:(1)set(int row, int col, double value):将第row行第col列的元素赋值为valu ...

  4. JAVA利用二维数组横版和竖版输出古诗

    平台:java eclipse 内容:利用二维数组分别横版和竖版输出杜牧的古诗<有寄>. 知识点: 1.创建二维数组两种方式 (1)声明二维数组语法: 数组元素的类型 数组名字[][]; ...

  5. Java利用二维数组判断节假日_《剑指offer》面试题3 二维数组中的查找 Java版

    (二维数组,每行递增,每列递增.输入二维数组和一个整数,判断数组中是否含有此数.) 我的方法:拿到题目,根据题目条件我提取出这样一个特性:一个数的右边和下面的数都比它大.于是就可以写出一种递归的方法: ...

  6. java利用二维数组查找鞍点_java找二维数组的鞍点

    LOGO 制作者: 制作者: 班级: 班级: 学号: 学号: 指导老师: 指导老师: 一.设计要求 求一个二维数组中的鞍点,即 该位置上的元素在该...... 54,98 19,32,34,65,34 ...

  7. 【C语言】利用二维数组输出成绩

    目的:用二维数组输出下面成绩 希望你可以成为第五名童鞋! 代码: #include<stdio.h> int main() {/* 创建一个带有 4行 5 列的数组 */int a[4][ ...

  8. c语言利用二维数组制作地图,用程序实现RPG背景地图二维数组构建

    朱艳萍 摘要:该文主要阐述了前端RPG开发中,当作为背景的地图较为复杂时,如何用程序的方法构建与背景地图一致的二维数组,采用图文结合论述其算法,并使用原生JavaScript语言实现. 关键词:二维数 ...

  9. 利用二维数组编程实现功能:输入一个整数n(n不超过10),输出n行的杨辉三角形

    杨辉三角形的用处与构成 11幂次方的值 二项式系数 相加为2幂次方的值 构成为下一行数为上面临近的两个数相加 遇到的问题 该使用哪个数组 先赋值再输出还是边赋值边赋值 如何控制首位均为1 如何使输出变 ...

最新文章

  1. robotframework的学习笔记(十二)------DatabaseLibrary 库
  2. 有关无人驾驶汽车的思考
  3. VINS状态估计篇-视觉sfm初始化
  4. creo打不开stp文件_让Creo输出的stp格式文件含有颜色设置 | 坐倚北风
  5. java 包装类_Java中的包装类
  6. sql 单引号_三种数据库的 SQL 注入详解
  7. pc机箱 图纸_如何升级到新的PC机箱
  8. 评价系统海量数据存储设计
  9. Windows操作系统----安全机制----Token
  10. unity学习路上....
  11. 怎么看待小公司的规章制度?
  12. Proteus,keil5仿真运行stm32程序,流水灯详细教程
  13. activiti之奇淫技巧一(自动完成首个任务)
  14. Python: Basemap进行数据可视化分析------专题图绘制
  15. sulley对Modbus协议fuzz实验
  16. BitComet Stable (build 1.66.4.13) 比特彗星-使用教程
  17. VUE 中的搜索关键字
  18. elasticsearch 父子文档
  19. 华为鸿蒙os手机版,华为鸿蒙os2.0系统正式版安装包下载-华为鸿蒙2.0系统手机版v2.0安卓版_289手游网下载...
  20. 快速解决Ubuntu镜像在官网下载速度很慢的方法

热门文章

  1. modbus协议crc校验c语言代码,MODBUS通信协议中CRC校验码的计算(C/C++)实现
  2. java的输入输出格式
  3. Spring5 核心篇
  4. 如何将照片导入进佳能相机中
  5. HDChina历史,出生、辉煌、变性、死去
  6. 第三周项目-委派任务
  7. SQL 将一张表的数据复制到另一张表
  8. ps基础学习: ps使用环境介绍
  9. Caffe图片特征提取(Python/C++)
  10. virsh 虚拟机内存不够用啦!!!磁盘扩容