c++ - c++中的方阵
问题描述
我做了上面的代码来计算方阵的矩阵,但它不起作用,有人可以向我解释错误吗
#include <iostream>
using namespace std;
int main() {
int M[3][3]={{2, 4, -6}, {1, 5, 3}, {1, 3, 2}};
int n, mult;
n=3;
cout << "Matrix: " << endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
cout << M[i][j] << "\t";
cout << "\n";
}
for (int i=0; i<n; i++){
for (int j=i+1; j<n; j++){
mult=M[j][i]/M[i][i];
for (int k=i; k<n; k++){
M[j][k]=M[j][k]-mult*M[i][k];
}
}
}
cout << "Echelon matrix: " << endl;
for (int i=0; i<n; i++){
for (int j=i+1; j<n; j++){
for(int k=i; k<n; k++){
cout << M[j][k] << "\t";
cout << "\n";
}
}
}
return 0;
}
解决方案
在这段代码中,我用 替换int
了double
,即使这样,对于这个特定的矩阵,它也可以与int
.
主要问题是结果的输出被破坏了,当只需要两个时,3个循环。
请注意,您不检查高斯枢轴M[i][i]
是否不为空。应该完成代码来处理这种情况。
输出:
矩阵:
2 4 -6
1 5 3
1 3 2
梯队矩阵:
2 4 -6
0 3 6
0 0 3
#include <iostream>
//using namespace std;
int main() {
double M[3][3]={{2, 4, -6}, {1, 5, 3}, {1, 3, 2}};
int n = 3;
std::cout << "Matrix: " << std::endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
std::cout << M[i][j] << "\t";
std::cout << "\n";
}
for (int i = 0; i < n; i++){
for (int j = i+1; j < n; j++){
double mult = M[j][i]/M[i][i];
for (int k = i; k < n; k++){
M[j][k] = M[j][k] - mult*M[i][k];
}
}
}
std::cout << "Echelon matrix: " << std::endl;
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
std::cout << M[i][j] << "\t";
}
std::cout << std::endl;
}
return 0;
}
推荐阅读
- ios - 为什么我在集合视图上的第一个单元格总是显示错误的数据?
- html - 如何链接存储在 Dropbox 上的 css 外部文件?
- javascript - 如何:反应序列化多维数组并在 PHP 中反序列化
- c - malloc 返回的指针在 NULLcheck 时更改为 NULL
- graphql - 如何使用 Apollo 和 GraphQL 在 Nextjs 中实现 CSRF 保护
- html - Outlook 中的 html 电子邮件显示错误
- linux - spring-boot 应用程序可以自行关闭吗?
- json - 读取存储在单个文件中的多个 json 对象
- java - Mac OS(身份不明的开发者)
- c# - ListView 的 SelectedIndex 值错误