我编写了一个程序,该程序可以找到数组的平衡点(索引)。我想测试可能发生的不同类型的错误,但是我不知道要插入什么值。
这是我的代码:
#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
答案 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);