c++输入一个矩阵_C++矩阵求逆

5e42f8f7ec2f234b0b26c1256f1e56ce.png

实现思路:

1:首先输入预想要进行求逆的矩阵

2:求行列式,判断矩阵能否求逆

3:判断是否需要进一步求余子式

4:求出矩阵的余子式,对余子式进行转置,并且除以行列式得到

#include<iomanip>
#include <iostream>
#include <cstring>
#include <string>
#include <cstringt.h>
#include<vector>
#include <fstream>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
using namespace std;
#define MAX 100
/*
实现思路:
1:首先输入预想要进行求逆的矩阵
2:求行列式,判断矩阵能否求逆
3:判断是否需要进一步求余子式
4:求出矩阵的余子式,对余子式进行转置,并且除以行列式得到
*/

//----------------------------------------------------------solved
//read matrix : cin>> in c++ , scanf() in c
int scanf(float a[MAX][MAX]) {
    
	int i, j, n;
	cout << "n Enter Length Of Matrix N*N : ";
	cin >> n;
	cout << "n--------------------------n";
	for (i = 0; i < n; i++)
		for (j = 0; j < n; j++) {
    
			cout <<setw(8) << " Matrix[" << i + 1 << "][" << j + 1 << "] : ";
			cin >> a[i][j];
		}
	cout << "n----------------------------------------------------n";
	return n;
}

//-----------------------------------------------------solved
// show matrix : cout<< in c++ , printf() in c
void printf(float a[MAX][MAX], int n, int show) {
    
	int i, j;
	if (show == 1)
		for (i = 0; i < n; i++) {
    
			for (j = 0; j < n; j++)
				cout << " " << setw(8) << a[i][j] << " t";
			cout << "n";
		}
	else if (show == 2) {
    
		cout << "nn The Inverse Of Matrix Is : nn";
		for (i = 0; i < n; i++) {
    
			for (j = 0; j < n; j++)
				cout << " " << setw(8) << a[i][j] << " t";
			cout << "n";
		}
	}
}

//---------------------------------------------------solved
//	calculate minor of matrix OR build new matrix : k-had = minor//计算矩阵的余子式或建立新矩阵:k-had =余子式
void minor(float b[MAX][MAX], float a[MAX][MAX], int i, int n) {
    //0<=i<n
	int j, l, h = 0, k = 0;
	for (l = 1; l < n; l++)
		for (j = 0; j < n; j++) {
    //此处不用考虑会不会取到第i行,因为l=i+1,自然地避开了取第i行的风险
			if (j == i)//假设进行到第i列
				continue;//不加入余子式中
			b[h][k] = a[l][j];//如果不是第i列,余子式先从第一行开始填满
			k++;			  //如在求a[0][0]的余子式,则不考虑第0列的
			if (k == (n - 1)) {
    //当第一列填满时,h++,进行下一行的填充
				h++;
				k = 0;//k回到第一列,准备继续向后填充
			}
		}
}// end function

//---------------------------------------------------solved
//	cal
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值