0

メソッドを呼び出そうとしていますが、値を返さなければならないdist()というエラーが表示され続けます。dist()

// creating array of cities
double x[] = {21.0,12.0,15.0,3.0,7.0,30.0};
double y[] = {17.0,10.0,4.0,2.0,3.0,1.0};

// distance function - C = sqrt of A squared + B squared

double dist(int c1, int c2) {
    z = sqrt ((x[c1] - x[c2] * x[c1] - x[c2]) + (y[c1] - y[c2] * y[c1] - y[c2]));
    cout << "The result is " << z;
}

void main()
{
    int a[] = {1, 2, 3, 4, 5, 6};
    execute(a, 0, sizeof(a)/sizeof(int));

    int  x;

    printf("Type in a number \n");
    scanf("%d", &x);

    int  y;

    printf("Type in a number \n");
    scanf("%d", &y);

    dist (x,y);
} 
4

5 に答える 5

7

戻り値のタイプをvoidに変更します。

void dist(int c1, int c2) {

  z = sqrt ((x[c1] - x[c2] * x[c1] - x[c2]) +
           (y[c1] - y[c2] * y[c1] - y[c2]));
  cout << "The result is " << z;
}

または、関数の最後に値を返します。

double dist(int c1, int c2) {

  z = sqrt ((x[c1] - x[c2] * x[c1] - x[c2]) +
           (y[c1] - y[c2] * y[c1] - y[c2]));
  cout << "The result is " << z;
  return z;
}
于 2012-03-13T17:53:10.447 に答える
4

dist関数はを返すように宣言されていますが、double何も返しません。明示的に返品するzか、返品タイプを次のように変更する必要がありますvoid

// Option #1 
double dist(int c1, int c2) {
    z = sqrt (
         (x[c1] - x[c2] * x[c1] - x[c2]) + (y[c1] - y[c2] * y[c1] - y[c2]));
      cout << "The result is " << z;
    return z;
}

// Option #2
void dist(int c1, int c2) {
    z = sqrt (
         (x[c1] - x[c2] * x[c1] - x[c2]) + (y[c1] - y[c2] * y[c1] - y[c2]));
      cout << "The result is " << z;
}
于 2012-03-13T17:53:10.490 に答える
3

「結果はzです」をSTDOUTに出力していますが、dist関数の結果として実際には返されていません。

それで

double dist(int c1, int c2) {

    z = sqrt (
         (x[c1] - x[c2] * x[c1] - x[c2]) + (y[c1] - y[c2] * y[c1] - y[c2]));
      cout << "The result is " << z;
}

する必要があります

double dist(int c1, int c2) {

    z = sqrt (
         (x[c1] - x[c2] * x[c1] - x[c2]) + (y[c1] - y[c2] * y[c1] - y[c2]));
      cout << "The result is " << z;
    return(z);
}

(まだ印刷したい場合)。


あるいは

distを使用して、値を返さないことを宣言できvoidます。

void dist(int c1, int c2) {

    z = sqrt (
         (x[c1] - x[c2] * x[c1] - x[c2]) + (y[c1] - y[c2] * y[c1] - y[c2]));
      cout << "The result is " << z;
}

C++関数のチュートリアルを参照してください

于 2012-03-13T17:52:59.957 に答える
0

次の行を追加するだけです。returnz; -そのような質問の場合は-1。

于 2012-03-13T17:53:19.333 に答える
0

doubleを返すようにdistを定義したので( "double dist")、dist()の下部で"returndist;"を実行する必要があります。または、「doubledist」を「voiddist」に変更します。voidは、何も返す必要がないことを意味します。

于 2012-03-13T17:54:47.883 に答える