n个连续数组的总和

时间:2015-05-03 21:47:23

标签: c++ arrays sum

所以我有一个类似{1, 4, 2, 3, 5, 3, 7}的数组,我必须创建一个新数组,其中包含每个连续3个元素的总和,如{7, 9, 10, 11, 15}。 到目前为止,我到了这里,我不知道我做错了什么。

#include <iostream>
#include <conio.h>

using namespace std;

int a[] = {1, 1, 2, 3, 5, 3, 7};
int lung = sizeof(a)/sizeof(a[0]);
int *l = new int[10];

int calc(int *a, int m)
{
    int sum = 0;
    int stmax = (lung - m) - 1; 
    for(int st=0;st <= stmax; st++)
    {
        for(int i = 0; i < m; i++)
        {
            sum = sum + a[st+i];
        }
        l[st] = sum;
    }
    return 0;   
}

void main()
{
    int a[] = {1, 1, 2, 3, 5, 3, 7};
    cout << calc(a, 3)<< endl;
    for (int i = 0; i < lung; i++)
    {
        cout << l[i] << " | ";
    }
    _getch();
}

2 个答案:

答案 0 :(得分:0)

每次迭代后你必须设置sum=0;

for(int st=0;st <= stmax; st++)
    {
        sum=0;
        for(int i = 0; i < m; i++)
        {
            sum = sum + a[st+i];
        }

        l[st] = sum;


    }

并且您还必须声明int stmax = (lung - m); //ommit -1

并在main函数中打印数组直到stmax

for (int i = 0; i <= stmax; i++)
    {
        cout << l[i] << " | ";
    }

答案 1 :(得分:0)

我会这样做:

{{1}}