0

A と B の方程式でこれらのエラーを取得し、それから他のエラーは calcit の最後にあるため、私はそれをスロープイットに渡そうとしています

  [エラー] バイナリ 'operator*' に対するタイプ 'int [3]' および 'int [3]' の無効なオペランド
 [エラー] バイナリ 'operator*' に対する型 'double' および 'int [3]' の無効なオペランド
[エラー] 'int' から 'double*' への無効な変換 [-fpermissive]
 [エラー] 引数 '2' の 'int*' を 'double*' に変換できません
     double slops[3], yints[3], boards[3];
     double yint15,yint20,yint25,slop15,slop20,slop25,rsq15,rsq20,rsq25;
     double board;

    void calcit (double tim15[], double tim20[], double tim25[], double tem15[],
        double tem20[], double tem25[], int indx, int board,int temperature)
     {
double B;
double A;
double time;
double slopsofslops;
double yofslopes;
double rsq;
double yint15,yint20,yint25,slop15,slop20,slop25,rsq15,rsq20,rsq25;
slopeit(tim15, tem15, indx, slop15, yint15, rsq15);
slopeit(tim20, tem20, indx, slop20, yint20, rsq20);
slopeit(tim25, tem25, indx, slop25, yint25, rsq25);


yints[0]=yint15;               
yints[1]=yint20;
yints[2]=yint25;

boards[0]=15;
boards[1]=20;
boards[2]=25;

slops[0]=slop15;
slops[1]=slop20;
slops[2]=slop25;


indx = 3;


time = pow(e,(temperature -B)/A);
A = (slops * boards) + yofslopes;
B = (yofslopes * boards) + yints; 

//Pass the values needed into writeit and finished 

slopeit(board, slops, indx, slopsofslops, yofslopes, rsq);
       }
  void slopeit(double x[], double y[], int n, double& m, double& b, double& r)
4

4 に答える 4

1

C++ には、配列を操作するための組み込み演算子がないため、独自のオーバーロードを作成する必要があります。

最後のエラーに関しては、 (またはへのポインター)intの配列は (またはへのポインター) の配列と同じではありませんdouble。新しい一時double配列を作成し、配列から入力して、配列を関数にint渡す必要があります。double

于 2013-11-22T18:40:27.977 に答える
0

[エラー] バイナリ 'operator*' に対するタイプ 'int [3]' および 'int [3]' の無効なオペランド

このエラーは、次の行が原因です。

A = (slops * boards) + yofslopes;

スロップとボードはどちらも double[3] 型です。C++ は配列を乗算できません。Qt ライブラリのQVector3Dクラスなど、それをサポートできる別のクラスを使用するか、for ループで積 (外積または内積) を自分で計算する必要があります。

[エラー] バイナリ 'operator*' に対する型 'double' および 'int [3]' の無効なオペランド

このエラーは、次の行が原因です。

B = (yofslopes * boards) + yints; 

yofslopes は double 型で、boards は double 型です[3]。同様に、C++ はこれらの種類の操作をサポートしていません。それらは互換性のないタイプです。for ループを実行して、各要素を yofslopes で乗算することをお勧めします (目的は何ですか?)。また、ある配列を別の配列に追加することもできません。

その行の単位分析は次のとおりであるため、ここで何をしようとしているのかは不明です。

double = (double * 3dVector) + 3dVector

それは意味がありません...

[エラー] 'int' から 'double*' への無効な変換 [-fpermissive]

このエラーは次の行からのものです。

slopeit(board, slops, indx, slopsofslops, yofslopes, rsq);

double 型 (double* ではない) の board というグローバル変数があります。次に、同じ名前で int 型 (double* ではない) のローカル変数を (calcit のパラメーターで) 定義しました。整数を渡して、明示的にキャストせずにポインタとして解釈するべきではありません。

[エラー] 引数 '2' の 'int*' を 'double*' に変換できません

このエラーが何を示しているのかわかりません。

お役に立てれば!

于 2013-11-22T19:03:51.853 に答える
0

定義に従って、関数へのポインターを渡す必要があります

  slopeit(board, slops, indx, *slopsofslops, *yofslopes, *rsq);
       }
  void slopeit(double x[], double y[], int n, double& m, double& b, double& r)
于 2013-11-22T18:46:39.663 に答える
0

そして、slopeit() への呼び出しでは、boards の代わりに board を使用して最初の引数を呼び出します。board は double で、boards は double[] です。

于 2013-11-22T18:42:34.873 に答える