2016-12-15 5 views
-2

に正の数と負の数の2D配列の和の平均を見つけることができますどのように私はC私はC

int data[4][5] = { 
    {3,-6,1,-5,7}, 
    {-2,9,-3,5,4}, 
    {7,3,-4,0,-6}, 
    {9,-2,-5,8,3} 
}; 

>Sum of all positive number 
>Mean of all positve number 
>Sum of all negative number 
>Mean of all negative number 

に正の数と負の数の2D配列の和の平均を見つけることができますどのように私は、大学からの新入生です私は最終試験をしています。明日は練習をしてください。ありがとう!

+1

(a [i] [j]> 0)の配列全体をスキャンし、それらの合計を見つけて合計の正数を追跡します。 sum/totalを除算します。同様に負の数に対しても行う。 – lU5er

+0

私に教えてください説明するコードを教えてもらえますか? – Tony

+0

@RoadRunnerおかげさまで私はそれ以上のことをやっていますが、LPの何が間違っていますか私は間違っていれば間違ったことをしました – Tony

答えて

1

ここでは、1Dアレイで動作するコードを示します。これを理解して2Dの問題に適用することができます。

2つの合計(正数と負数)を追跡する変数が必要です。これはintです。配列内に正と負の数がいくつあるかをカウントするには2つの変数が必要ですが、これらはまたintです。次に、手段を格納する変数が2つ必要です。これらはfloatですが、このタイプの計算にはdoubleを使用する方が良いでしょう。最後に、配列を添字にする変数が必要です。私は通常、この種の変数にsize_t変数を使用しますが、ここでは別のintを使用します。

合計とカウントを見つけるために配列をループした後、平均を計算する時です。ここに注意する一つの落とし穴は、我々が計算ので、もしすべての引数は、タイプintであるということです。

mean_pos = sum_pos/count_pos; 

我々は、整数の除算を使用して、その結果の小数部分を失うことになります。 count_pos * 1.0を掛けてこの値をdoubleに変換し、浮動小数点除算を使用することができます。

このコードでは、問題の仕様が示唆しているゼロ値はカウントされません。いずれかの方法でゼロ(正でも負でもない)を数えたい場合は、コードを変更するのは簡単なことです。

あなたのテストで幸運。

#include <stdio.h> 

int main(void) 
{ 
    int data[10] = { 3, -6, 1, -5, 7, -2, 9, -3, 5, 4 }; 
    int sum_pos = 0; 
    int sum_neg = 0; 
    int count_pos = 0; 
    int count_neg = 0; 
    double mean_pos, mean_neg; 
    int i; 

    for (i = 0; i < 10; i++) { 
     if (data[i] > 0) { 
      sum_pos += data[i]; 
      ++count_pos; 
     } else if (data[i] < 0) { 
      sum_neg += data[i]; 
      ++count_neg; 
     } 
    } 

    mean_pos = sum_pos/(count_pos * 1.0); 
    mean_neg = sum_neg/(count_neg * 1.0); 

    printf("Sum of positive numbers: %d\n", sum_pos); 
    printf("Mean of positive numbers: %f\n", mean_pos); 
    printf("Sum of negative numbers: %d\n", sum_neg); 
    printf("Mean of negative numbers: %f\n", mean_neg); 

    return 0; 
} 
+0

ありがとう!私はそれから学ぶでしょう、 – Tony

0
#include <stdio.h> 
#include <stdlib.h> 

#define ROWS 4 
#define COLS 5 

int 
main(void) { 
    int data[ROWS][COLS] = {{3,-6,1,-5,7}, 
          {-2,9,-3,5,4}, 
          {7,3,-4,0,-6}, 
          {9,-2,-5,8,3}}; 
    int numpos = 0, numneg = 0; 
    int possum = 0, negsum = 0; 
    int row, col; 

    for (row = 0; row < ROWS; row++) { 
     for (col = 0; col < COLS; col++) { 
      if (data[row][col] > 0) { 
       possum += data[row][col]; 
       numpos++; 
      } else if (data[row][col] < 0) { 
       negsum += data[row][col]; 
       numneg++; 
      } 
     } 
    } 

    printf("Sum of all positive numbers = %d\n", possum); 
    printf("Mean of all positive numbers = %.2f\n", ((1.0) * possum)/numpos); 
    printf("Sum of all negative numbers = %d\n", negsum); 
    printf("Mean of all negative numbers = %.2f\n", ((1.0) * negsum)/numneg); 

    return 0; 
} 
+0

動物に餌を与えないでください.... – LPs

+0

ありがとう! – Tony

+0

私はそれをやった....;) – LPs