0

私のプログラムのメイン関数では、変数で指定された要素数で動的配列を作成しました(計算配列が削除された後):

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;
}

これはメイン関数の場所で、上記の関数は行列式の計算に使用されます。

    double det;
    det = determinant(macierz, bok);     //bok was entered by user

問題は、配列macierzが動的として作成され、配列の行/列の量になるユーザー入力番号を許可することです (正方行列であるため、行の数は列の数に等しくなります)。この動的配列を引数の 1 つとして必要とする関数を作成するまで、問題なく動作しました。

最初の引数としてmacierz配列を使用できるようにするには、行列式関数の宣言をどのように変更する必要がありますか? そして、もう1つ小さなこと-行列式関数の配列cもエラーをスローしています(次の動的配列ですが、なぜ機能しないのか理解できません-macierzのように作成して削除しましたが、コンパイラーは「型」をスローしていますdouble' 予期しない")

4

1 に答える 1