C++ 数组输入不接受一定数量的整数
Posted
技术标签:
【中文标题】C++ 数组输入不接受一定数量的整数【英文标题】:C++ Array input not accepting certain number of integers 【发布时间】:2020-01-16 13:04:04 【问题描述】:我的任务是创建一个问题,从 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;
【问题讨论】:
您确定它“什么都不做”而不是“忙于处理您提供的数据”吗? 在发布之前编译您的代码。您忘记了包含中的 。 另外,您可能希望将数组分配为“元素”大小,并检查元素是否为正整数。 你是手动输入1000个随机数吗? @ChrisMM “修复”了那个,但我认为它一定是 SO 上的拼写错误,否则 OP 将无法在他们的程序中输入任何数字...... 【参考方案1】:1 如果要比较“整数”而不是浮点数(双精度),请使用“大小_t”而不是“双精度”
2 最好像这样定义和使用“arr”: 矢量 arr; ... arr.resize(元素); ... 排序(arr.begin(),arr.end()); 那么 'arr' 可以用作 'double*' 并摆脱手动删除 'arr'。
【讨论】:
感谢您的回答。但我不确定这些编辑需要去哪里。 好的。它只是一些建议,而不是直接回答这个问题。也许我应该把它们移到 cmets。以上是关于C++ 数组输入不接受一定数量的整数的主要内容,如果未能解决你的问题,请参考以下文章