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++ 数组输入不接受一定数量的整数的主要内容,如果未能解决你的问题,请参考以下文章

华为机试真题 C++ 实现正方形数量

模板(有序数组)

模板

如何在 C++ 中使用输入重定向添加整数

如何根据字符串数量的输入在 C++ 中创建数组?

2023/5/5