2016-12-15 64 views
-2

正数和负数二维数组的总和平均值如何找到在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 

我从念大一我明天有期末考试,请帮助我练习。谢谢!

+1

扫描整个数组if(a [i] [j]> 0),找到它们的总和并跟踪总正数。除以总额。对于负数也是如此。 – lU5er

+0

你可以给我解释我的代码,请先生。 – Tony

+0

@RoadRunner谢谢你,我会为它做更多的事情,但LP有什么问题我在这篇文章中做了什么错误,如果错了,我会删除它 – Tony

回答

1

下面是一些在1D数组上工作的代码。你可以理解这一点,并将其应用于你的2D问题。

我们需要变量来跟踪两个总和(正数和负数),它们可以是int s。我们需要两个变量来计算阵列中有多少个正数和负数,这些变量也可以是int s。那么我们需要两个变量来存储平均值。这些可能是float s,但是最好使用double来进行这种计算。最后,我们需要一个变量来索引数组。我通常使用size_t变量来处理这类事情,但在这里我将使用另一个int

在循环遍历数组以找到总数和计数值之后,该计算平均值了。一个陷阱要提防这里是所有的参数都是int型的,所以如果我们计算:

mean_pos = sum_pos/count_pos; 

,我们将利用整数除法,并失去了结果的小数部分。我们可以乘以count_pos * 1.0将此值转换为double并使用浮点除法。

我应该指出,这段代码不会计入零值,这就是您的问题规范所建议的。如果你想用其中一种方法计算0(它们不是正数或负数),修改代码应该是一件简单的事情。

祝您好运,您的测试。

#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