C++数组输入不接受一定数量的整数



我的任务是创建一个问题,从 10、100 和 1000 个随机整数的输入中找到两个最接近的数字。是的,这是针对学校,数据结构和算法分析的,但即使在我的二级C ++课程中,我也只需要编写"每天"程序,而不是这些"数学"问题。我已经到了无法再理解正在发生的事情的地步。

该程序通过询问您要插入多少个元素来工作。 所以输入"10"。 然后输入 10 个随机元素。完成它工作正常。

现在,当我输入 1000 个元素时,它什么也不做。 或者如果我增加随机数,说任何数字可能是 1-500,它什么也不做。

是什么导致此程序接受某些输入而不是其他输入?

我真的很感激任何指示、提示或任何东西,我在这门课程中遇到了困难,这是第一周。

#include iostream
#include vector
#include chrono
using namespace std;
using namespace std::chrono;
vector <pair<double, double>> ans;
double *arr = new double [1200000];
int main()
{
int elements;
cout << "Enter number of array elements: ";
cin >> elements;
cout << "Enter the elements: " << endl;
for (int i = 0; i < elements; i++)
cin >> arr[i];
auto start = high_resolution_clock::now();
//    Sort the array
sort(arr, arr + elements);
int smallest = INT_MAX;
for (int i = 1; i < elements; i++)
{
if ((arr[i] - arr[i - 1]) <= smallest)
{
if ((arr[i] - arr[i - 1] ) < smallest)
ans.clear();
smallest = arr[i] - arr[i - 1];
ans.push_back({arr[i - 1], arr[i]});
}
}
auto stop = high_resolution_clock::now();
cout << "nn******* The closest Pair(s) *******" << endl;
for(int i = 0; i < ans.size(); i++)
{
cout << "      tt" << ans[i].first << "t " << ans[i].second << endl;
}
auto duration = duration_cast<microseconds>(stop - start);
cout << "Time taken by the function: "
<< duration.count() << " microseconds" << endl;
return 0;
}

1 如果你想比较"整数"而不是浮点数(double(,那么使用'size_t'而不是'double'

2 最好像这样定义和使用"arr":
  向量 arr;
  。
  arr.resize(elements(;
  。
  sort(arr.begin((,arr.end(((;
然后"arr"可以用作"double*",并摆脱手动删除"arr"。

最新更新