0

誰でも助けてもらえますか、私はこの質問を解決することに行き詰まっています:

intタイプ の 2 次元配列のアドレス、配列内の行数、および配列内の列数の3 つのパラメーターを取る C の関数を作成します。関数で要素の二乗和を計算します。

たとえば、nums次の図の配列の場合:

  23  12  14   3

  31  25  41  17

関数の呼び出しは次のようになりsumsquares ( nums, 2, 4 )ます。返される値は になります4434。関数をテストする短いプログラムを作成します。


これまでのところ、私のプログラムは次のもので構成されています。

#include<stdio.h>
int addarrayA(int arrayA[],int highestvalueA);

int addarrayA(int arrayA[],int highestvalueA)
{
int sum=0, i;
for (i=1; i<highestvalueA; i++)
    sum = (i*i);

return sum;
}

int main( void )
{
int arr [2][4] = {{ 23, 12, 14,  3 },
                 { 31, 25, 41, 17 }};

printf( "The sum of the squares: %d. \n", addarrayA (arr[2], arr[4]) );

return 0;
}

私が受け取った答えは巨大な負の数ですが、4434 のはずです。

どんな助けでも大歓迎です!

4

2 に答える 2

2

質問で述べたように、が必要ですsumsquares( array, 2, 4 );が、関数はそれを行いません。

以下のコードを参照してください。

#include<stdio.h>

int sumsquares(int* arrayA,int row, int column);

int sumsquares(int* arrayA,int row, int column)
{
    int sum=0, i;
    for (i=0; i<row*column; i++)
        sum += (arrayA[i]*arrayA[i]);

    return sum;
}

int main( void )
{
    int arr [2][4] = {{ 23, 12, 14,  3 },
                      { 31, 25, 41, 17 }};

    printf( "The sum of the squares: %d. \n", sumsquares (&arr[0][0], 2, 4) );

    return 0;
}

出力:

The sum of the squares: 4434.
于 2015-12-04T04:25:29.003 に答える