gpt4 book ai didi

c++ - 使用多维数组的递归和动态内存分配来查找 NxN 矩阵的行列式

转载 作者:行者123 更新时间:2023-11-28 07:51:26 25 4
gpt4 key购买 nike

我正在尝试编写一个程序来计算任何 NxN 矩阵的行列式,而不管大小如何,但该程序有问题,对于任何大小大于 1 的矩阵都会崩溃。

如果有人能告诉我我做错了什么,我将不胜感激。我是 C++ 和动态内存的新手,所以请放轻松 (:.

这是我的程序:

#include <iostream>

using namespace std;

int determinant(int *matrix[], int size);
void ijMinor(int *matrix[], int *minorMatrix[], int size, int row, int column);

int main()
{
int size;
cout << "What is the size of the matrix for which you want to find the determinant?:\t";
cin >> size;

int **matrix;
matrix = new int*[size];
for (int i = 0 ; i < size ; i++)
matrix[i] = new int[size];

cout << "\nEnter the values of the matrix seperated by spaces:\n\n";
for(int i = 0; i < size; i++)
for(int j = 0; j < size; j++)
cin >> matrix[i][j];

cout << "\nThe determinant of the matrix is:\t" << determinant(matrix, size) << endl;

return 0;
}

int determinant(int *matrix[], int size){
if(size==1)return matrix[0][0];
else{
int result=0, sign=-1;
for(int j = 0; j < size; j++){

int **minorMatrix;
minorMatrix = new int*[size-1];
for (int k = 0 ; k < size-1 ; k++)
matrix[k] = new int[size-1];

ijMinor(matrix, minorMatrix, size, 0, j);

sign*=-1;
result+=sign*matrix[0][j]*determinant(minorMatrix, size-1);
for(int i = 0; i < size-1; i++){
delete minorMatrix[i];
}
}

return result;
}
}

void ijMinor(int *matrix[], int *minorMatrix[], int size, int row, int column){
for(int i = 0; i < size; i++){
for(int j = 0; j < size; j++){
if(i < row){
if(j < column)minorMatrix[i][j] = matrix[i][j];
else if(j == column)continue;
else minorMatrix[i][j-1] = matrix[i][j];
}
else if(i == row)continue;
else{
if(j < column)minorMatrix[i-1][j] = matrix[i][j];
else if(j == column)continue;
else minorMatrix[i-1][j-1] = matrix[i][j];
}
}
}
}

最佳答案

您的 minorMatrix 由未初始化的指针组成,因为:

minorMatrix = new int*[size-1];
for (int k = 0 ; k < size-1 ; k++)
matrix[k] = new int[size-1];

matrix[k]应该是minorMatrix[k]

关于c++ - 使用多维数组的递归和动态内存分配来查找 NxN 矩阵的行列式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13696750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com