计算一维二维二维数组的平均值

时间:2019-03-01 08:52:02

标签: c++

我有一个二维数组[pixels = 100] [sensors = 50](在data.cpp文件中提供) 我需要每个像素的传感器给出的平均值。结果应存储在E [100] / 50中,其中应包含先前计算的平均值。

**编辑:问题已解决!!更改后,数组类型为short,我得到了正确的值!感谢所有花时间回答我的查询的人,也感谢您向我介绍containers **

这是我的代码:

#include <iostream>

#include "const.h"
#include "data.h"
#include "SortEngine.h"
#include "test.h"
#include "fonction.h"
//example of how data is defined data 2darray[pixels = 10][sensors = 3]






      /* unsigned short 2darray{{ 10025 , 10192 , 10028 , 10129 , 10199 , 9843 , 9823 , 9857 , 9996 , 9873},
    {10081 , 10122 , 9853 , 10060 , 10027 , 10165 , 10154 , 9853 , 9877, 9816},
    {9845 , 9876 , 9954 , 9836 , 9876 , 10035 , 10094 , 9946 , 10195 

, 10080}} */


    void moyenne(unsigned short average[pixels])
{
    unsigned short transtab[pixels][sensors];
    unsigned short E[pixels];
    unsigned int i,k, count;

    Acquisition(0, transtab);// function to get the data from data.cpp


    for(i=0; i<pixels; i++)
    {
        E[i] = 0;
        average[i] = 0;
        count = 0;

        for(k=0; k<sensors; k++)
        {
            E[i] = E[i] + transtab[i][k];

            count++;
        }
        if(count != 0){
        average[i] = E[i]/count;
        }
        cout << average[i] << endl;

        }

    }

我一直坚持这2天,因为我没有发现问题。任何帮助,将不胜感激。谢谢。

注意:当我在代码中得到的值是平均值[0] = 10029的期望值:853(通常,代码应对transtab [0] [k]的所有元素求和(其中k <50),其中平均是按计数求和)

1 个答案:

答案 0 :(得分:0)

问题似乎是您正在计算空数组值。 用你的代码数总是等于传感器。 您必须首先检查transtab [i] [k]!= 0

for(k=0; k<sensors; k++)
{
  if (transtab[i][k] != 0) {
    E[i] = E[i] + transtab[i][k];
    count++;
  }
}