数组平衡指数的典型误差
Typical errors in equilibrium index of an array
作为面试的实际测试,我写了一个程序来查找数组的平衡点(索引(,基本上它将返回索引 o 元素,该元素的元素右边的元素之和等于他左边的元素之和。该程序运行良好,但是我需要一些想法(测试单元(来使该程序崩溃,以呈现可能的错误。
这是我的代码:
#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
原因是您声明了大小为 (index - 1( 的 "arr" 变量(在模拟中等于 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);
相关文章:
- 为什么在浮点中从大到小会引入更多的误差
- 基于相邻元素 c++ 的分段误差范围的循环
- QImage::p ixel 和 QImage::setPixel 坐标超出范围误差
- 将误差线添加到 VTK 二维散点图
- 动态矩阵特征分解过程中的误差
- 有了memory_order_relaxed,原子变量的总修改顺序如何在典型体系结构上得到保证
- 转换为非标量误差是什么意思?我该如何解决?
- 特征误差:INVALID_MATRIX_PRODUCT乘向量和矩阵
- 使用不同参数匹配器的同一方法ON_CALL AND EXPECT_CALL会产生饱和和活动误差
- boost odeint 中的受控误差步进器是否支持复杂的数据类型?
- 此外,在计算大斐波那契数时存在精度误差
- C++17中不定参数函数的误差
- 多态性中独立类的基本误差.C++
- 犰狳函数的不同最小二乘误差
- 在 qt 中的绘图中拖动误差线
- variadic函数和折叠表达:试图在Visual Studio 2017中编译时致命误差
- 在Cython中使用移动方法时的汇编误差
- variadic模板代码中的GCC VS MSVC编译误差
- CMAKE和CUDA的权限误差
- 数组平衡指数的典型误差