1

C の配列に対して次の 2 つのことを行う必要があります。

  1. そのエントリを合計します。
  2. ゼロ以外のすべてのエントリの位置を見つけます。

配列の各要素をループすることで両方を行っています。例えば

int sum_array(int a[], int num_elements)
{
   int i, sum=0;
   for (i=0; i<num_elements; i++)
   {
     sum = sum + a[i];
   }
   return(sum);
}

タスク 2 では、エントリが 0 かどうかを確認します。そうでない場合は、その位置を別の配列に追加して、ゼロ以外としてマークします。

質問

これらを行うより効率的な方法はありますか?

より効率的なソリューションがあれば、GNU Scientific Library (GSL) も使用しています。最近Cを始めたばかりです。

4

2 に答える 2

0

Gregor、EvilTeach、および私自身のグーグルのいくつかからのコメントに基づいて、私のアプローチは受け入れられます。

于 2012-09-21T13:47:07.777 に答える
0

パート 2 では、特に何もする必要はありません。

配列の値がゼロの場合、false と評価されます。ゼロ以外の値はすべて true と評価されます。したがって、いつでも配列を反復処理して、ゼロ値を無視できます。

于 2012-09-16T13:57:40.973 に答える