如何检查数组c ++中的第一个元素和最后一个元素

时间:2014-10-16 02:52:01

标签: c++ arrays function element

通过执行以下操作来计算平滑数组:每个值smooth[N]为 三个值的平均值:signal[N-1]signal[N]signal[N+1]

对于第一个元素 平滑,平均信号的前两个元素。对于平滑的最后一个元素,平均值 最后两个信号元素。

如何检查第一个元素和最后一个元素?使用for - 循环错了吗?这是我的功能的样子。

void smoothArray(const int sig[], int result[], int len)
{

    for (int i = 0; i < len; i++)
    {

        result[i] = (sig[i - 1] + sig[i] + sig[i + 1]) / 3;
    }
    return;
}

4 个答案:

答案 0 :(得分:0)

如果param len result 数组的长度,则无法确定第一个或最后一个元素。

该功能应该是

void smoothArray(const int sig[], int result[], int lenSig, int lenResult)

答案 1 :(得分:0)

  

如何检查第一个元素和最后一个元素?

通过测试循环索引来查看它是否是数组的第一个或最后一个索引:

void smoothArray(const int sig[], int result[], int len)
{
    for (int i = 0; i < len; i++)
    {
         int sum = sig[i], n = 1;
         if (i > 0)
             sum += sig[i-1], n++;
         if (i < len-1)
             sum += sig[i+1], n++;

         result[i] = sum / n;
    }
}

答案 2 :(得分:0)

void smoothArray(const int sig[], int result[], int len)
{
    for (int i = 0; i < len; i++)
    {
        // first elem
        if (0 == i){
            result[i] = (sig[1] + sig[0]) / 2;
            continue;
        }

        // last elem
        if (len - 1 == i){
            result[i] = (sig[i] + sig[i - 1]) / 2;
            continue;
        }

        result[i] = (sig[i - 1] + sig[i] + sig[i + 1]) / 3;
    }
    return;
}

答案 3 :(得分:0)

谢谢@ user3823825和@JimBalter。

要检查第一个元素以及另一个数组中两个元素的最后和平均值,需要一个包含两个if语句的for循环。

void smoothArray(const int sig[], int result[], int len)
{
    for (int i = 0; i < len; i++)
    {
        // first elem
        if (0 == i){
            result[i] = (sig[1] + sig[0]) / 2;
            continue;
        }

        // last elem
        if (len - 1 == i){
            result[i] = (sig[i] + sig[i - 1]) / 2;
            continue;
        }

        result[i] = (sig[i - 1] + sig[i] + sig[i + 1]) / 3;
    }
    return;
}