c++ - 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 << "\n\n******* The closest Pair(s) *******" << endl;
for(int i = 0; i < ans.size(); i++)
{
cout << " \t\t" << 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 如果要比较“整数”而不是浮点数(双精度),请使用“大小_t”而不是“双精度”
2 最好像这样定义和使用'arr':
vector arr;
...
arr.resize(元素);
...
排序(arr.begin(),arr.end());
然后'arr'可以用作'double *'并摆脱手动删除'arr'。
推荐阅读
- laravel - 资源视图供应商目录中的 GCloud Laravel 通知自定义模板
- elasticsearch - Elastic Search 测量堆使用情况
- apache-nifi - 如何查找GenerateTableFetch创建的所有文件都已处理
- python - lxml (etree) - 根标签的漂亮打印属性
- macos - 无法在 Mac Os Mojave 上停止或重新启动 Apache
- python - Exchangelib item.sender 返回字节
- python - 如何访问项目类 Scrapy
- .net - 使用实现接口的通用类型参数对不同类型的实例进行拆箱
- python - 仅检索从 firebase 添加到我在 firebase 中的侦听器的 child
- angular - 找不到模块延迟预加载角度路由