-1
プログラミングとC++には新しく、Cramerのルールを使用してシステムを解決する必要があります。それはすべて問題なく機能しましたが、機能をよりよく活用しなければなりませんでした。 変換エラーが発生するたびに、通常はわかりますが、 というエラーが表示されます。 "行51エラー: 'long double'を 'long double *'に '1'から ' long double Cramer_3x3(long double *、long double(*)[3]、int) '"C++は引数 '1'〜 'long'の 'long double'を 'long double *'に変換できません。
#include <iostream>
using namespace std;
long double Determinant_3x3(long double matrix_3x3[3][3])
{
long double determinant;
determinant = matrix_3x3[0][0] * matrix_3x3[1][1] * matrix_3x3[2][2] + matrix_3x3[0][1] * matrix_3x3[1][2] * matrix_3x3[2][0] + matrix_3x3[0][2] * matrix_3x3[1][0] * matrix_3x3[2][1] - matrix_3x3[0][2] * matrix_3x3[1][1] * matrix_3x3[2][0] - matrix_3x3[0][1] * matrix_3x3[1][0] * matrix_3x3[2][2] - matrix_3x3[0][0] * matrix_3x3[1][2] * matrix_3x3[2][1];
return determinant;
}
long double Cramer_3x3(long double d[3], long double matrix_3x3[3][3], int step)
{
long double result;
if(step == 0){
long double matrix_3x3d[3][3] = {d[0], matrix_3x3[0][1], matrix_3x3[0][2], d[1], matrix_3x3[1][1], matrix_3x3[1][2], d[2], matrix_3x3[2][1], matrix_3x3[2][2]};
result = Determinant_3x3(matrix_3x3d)/Determinant_3x3(matrix_3x3);
}
else if(step == 1){
long double matrix_3x3d[3][3] = {matrix_3x3[0][0], d[0], matrix_3x3[0][2], matrix_3x3[1][0], d[1], matrix_3x3[1][2], matrix_3x3[2][0], d[2], matrix_3x3[2][2]};
result = Determinant_3x3(matrix_3x3d)/Determinant_3x3(matrix_3x3);
}
else{
long double matrix_3x3d[3][3] = {matrix_3x3[0][0], matrix_3x3[0][1], d[0], matrix_3x3[1][0], matrix_3x3[1][1], d[1], matrix_3x3[2][0], matrix_3x3[2][1], d[2]};
result = Determinant_3x3(matrix_3x3d)/Determinant_3x3(matrix_3x3);
}
return result;
}
int main()
{
long double d[3], matrix_3x3[3][3], result[3];
cout << "Voer een 3x3 matrix in.\n";
for(int i = 0; i < 3; i++){
for(int j = 0; j < 3; j++){
cin >> matrix_3x3[i][j];
}
}
cout << "Voer d1, d2 en d3 in.\n";
for(int k = 0; k < 3; k++){
cin >> d[k];
result[k] = Cramer_3x3(d[3], matrix_3x3[3][3], k); //line 51, where the error happens
}
cout << "Het ingevoerde stelsel ziet er zo uit.\n" << matrix_3x3[0][0] << "x + " << matrix_3x3[0][1] << "y + " << matrix_3x3[0][2] << "z = " << d[0] << endl << matrix_3x3[1][0] << "x + " << matrix_3x3[1][1] << "y + " << matrix_3x3[1][2] << "z = " << d[1] << endl << matrix_3x3[2][0] << "x + " << matrix_3x3[2][1] << "y + " << matrix_3x3[2][2] << "z = " << d[2] << endl << "x = " << result[0] << "\ny = " << result[1] << "\nz = " << result[2] << endl;
return 0;
}
私はGNU GCCコンパイラを使用しています:
は、ここに私のコードです。
私は似たような質問をしましたが、助けにはなりませんでした。あなたが特定の渡している
であるべきあなたのエラーメッセージがどこかで、あなたが言っていることを述べていますコンパイラは 'long double'を*ポインタ*に変換して' long double'に変換します。これはどこかのタイプミスかもしれません。 –