在我的程序的主要功能中,我创建了动态数组,其中包含变量中指定的元素数量(在删除计算数组之后):
cin >> bok;
double **macierz;
macierz = new double *[bok];
for(int i = 0; i < bok; ++i){
macierz[i] = new double[bok];
}
数组 macierz (波兰语中的矩阵)用于使用我编写的另一个函数来计算它的行列式:
#include <iostream>
#include <conio.h>
#include <string>
#include <math.h>
double determinant(double b[][bok],int m);
// there is int main(){ ... }
double determinant(double b[][bok],int m){
int i, j;
double sum = 0,
double **c; //Second array that throws "type 'double' unexpected"
c = new double *[m];
for(int i = 0; i < m; ++i){
c[i] = new double[m];
}
if(m==2){
sum = b[0][0]*b[1][1] - b[0][1]*b[1][0];
return sum;
}
for(int p=0; p<m; p++){
int h = 0,k = 0;
for(i=1; i<m; i++){
for(j=0;j<m;j++){
if(j==p)
continue;
c[h][k] = b[i][j];
k++;
if(k == m-1){
h++;
k = 0;
}
}
}
sum = sum + b[0][p]*(pow((float)-1,p))*determinant(c,m-1);
}
for(int i = 0; i < m; ++i){ //Removing second array
delete[] c[i];
}
delete[] c;
return sum;
}
这是main函数中的位置,其中一个用于计算行列式:
double det;
det = determinant(macierz, bok); //bok was entered by user
问题是,数组 macierz 是创建为动态的,以允许用户输入数字,这将是数组行/列的数量(它是方形矩阵,因此行数等于数字列)。它完美无缺地工作,直到我创建了需要这个动态数组作为参数之一的函数。
如何修改 determinant 函数的声明,以便能够使用 macierz 数组作为它的第一个参数?还有一件小事 - determinant 函数中的数组 c 抛出错误(它是下一个动态数组,但我无法理解,为什么它不起作用 - 我已经创建和删除它像 macierz 但编译器正在抛出“类型'双倍'意外”)