数组平衡指数的典型误差

时间:2019-02-06 08:56:00

标签: c++

我编写了一个程序,该程序可以找到数组的平衡点(索引)。我想测试可能发生的不同类型的错误,但是我不知道要插入什么值。

这是我的代码:

#include <iostream>

using namespace std;

int getIndex(int array[], int size)
{
    int totalSum = 0;
    for (int i = 0; i < size; i++)
    {
        totalSum += array[i];
    }

    int leftSum = 0;
    int rightSum = 0;

    for (int i = 0; i < size; i++)
    {
        rightSum = totalSum - (leftSum + array[i]);
        if (leftSum == rightSum)
        {
            return i;
        }

        leftSum += array[i];
    }

    return -1;
}

int main()
{
    cout << "Number of elements: " << endl;
    int index;
    cin >> index;
    int inputIndex = index - 1;
    int arr[inputIndex];

    for (int i = 0; i <= inputIndex; ++i)
    {
        cout << "Element " << i << endl;
        cin >> arr[i];
    }

    int result = getIndex(arr, index);
    if (result == -1)
    {
        cout << "Equilibrium index doesn't exist" << endl;
    }
    else
    {
        cout << "Your index is: " << result << endl;
    }

    return 0;
}

这是我的输入值:

元素数:4
元素0:1
元素1:0
元素2:0
元素3:1

输出: 您的索引是:1

1 个答案:

答案 0 :(得分:0)

原因是您声明的“ arr”变量的大小为(index-1)(在模拟中等于3)。因此,您只创建了一个包含3个元素的数组。 而且,您的“ arr”变量是一个动态数组。因此,您应该这样尝试:

cout << "Number of elements: " << endl;
int index;
cin >> index;
int* arr = (int*)malloc(sizeof(int)*index); //initialize arr

for (int i = 0; i < index; ++i)
{
    cout << "Element " << i << endl;
    cin >> arr[i];
}
// Add your code that you wanna work with arr array in here
free(arr);