0

整数の配列で最大の要素のインデックスを見つけるこのプログラムを作成しました。何らかの理由で、コンパイルしようとすると次のエラーが発生します。私のコードの何が問題なのかについてのアイデアはありますか? 何も見つからないようです。

part1.c:9: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant

part1.c: In function ‘main’:

part1.c:13: warning: implicit declaration of function ‘largest’

part1.c: At top level:

part1.c:20: error: expected ‘;’, ‘,’ or ‘)’ before numeric constant
make: *** [part1] Error 1

私のコード:

// Program that finds the largest element in an array of integers 

#include <stdio.h>

// Main body
// Create and initialise a one-dimensional array of integers

#define ARRAY_SIZE 10
int largest(int array, int ARRAY_SIZE);
int main(int argc, char** argv)
{
  int array [ARRAY_SIZE] = { 5, 1, 2, 8, 12, 9, 0, 4, 52, 91 };
  int maxIndex = largest(array, ARRAY_SIZE);
  printf("%d", maxIndex);
}

// largest - function
// takes (array,length) -> returns the index of the largest element in the array

int largest(int array, int ARRAY_SIZE)
{
   int maxIndex;

   for(int index = 0; index < 10; index++)
   {
     if array[i] > array[i+1]
     i = maxIndex;  
   }

   return maxIndex; 

}
4

5 に答える 5

3

問題は、コードがどの関数にも含まれていないことです。私はあなたがちょうど必要だと思いますmain

int main(int argc, char** argv)
{
    int array [ARRAY_SIZE] = { 5, 1, 2, 8, 12, 9, 0, 4, 52, 91 };
    int maxIndex;
    maxIndex = largest(array, ARRAY_SIZE);
    printf("%d", maxIndex);
}

変数 inは からは見えないため、関数maxIndex内に の宣言も追加しました。mainlargestmain

コメントの後:

あなたの問題は、プリプロセッサによってARRAY_SIZE変更されていることです。10の宣言を次のように変更largestします。

int largest(int array, int asize);

また、実際の関数で以下に変更します。

于 2013-10-15T21:34:19.937 に答える
0
largest(array, ARRAY_SIZE);
printf("%d", maxIndex);

これは問題になる可能性があります。

int maxIndex = largest(array, ARRAY_SIZE);
printf("%d", maxIndex);

??

于 2013-10-15T21:35:20.890 に答える
0

SOへようこそ、マイク!

#define ARRAY_SIZE 10

int array [ARRAY_SIZE] = { 5, 1, 2, 8, 12, 9, 0, 4, 52, 91 };
largest(array, ARRAY_SIZE);
printf("%d", maxIndex);

// largest - function

これらの操作、largest()呼び出しとprintf()呼び出し -- ここでは実行できません。それらは合法的な構文ではありません。関数は、既存の関数の宣言内で呼び出す必要があります。

これらを呼び出す必要がある関数のスコープにこれらを移動することを検討してください。起動時に、早い段階でこれらを作成できるmain()場合、またはこれがライブラリの場合は、ライブラリのエントリ ポイントに配置します。

于 2013-10-15T21:36:00.050 に答える