c++ 用0到10的随机数填充n个数组

sc4hvdpw  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(165)

我需要写一个程序,它将加载一个自然数n(n〈20),然后用0到10的随机数填充一个n的数组。
它将在屏幕上写出数组的元素。
接下来,它将加载一个自然数x。
它将检查并在屏幕上写出数字x在数组中出现的次数。

int n;
int array[n]={0};
int values[10];

cin >> n;

for(int i = 0; i < n; i++) {
    values[i] = i;
int left = 10;
for(int i = 0; i < 10; i++)
{
    int n = rand() % left;
    array[i] = values[n];
    left--;
    values[n] = values[left]; 
    cout << array[i] << endl;
}

}
8zzbczxx

8zzbczxx1#

标题##您的代码看起来不像我所期望的当前C++。

无论如何,array[n]不是标准的C++,它不知道可变长度的数组。
另一件要及早学习的事情是永远不要相信用户的输入,并始终检查它。
对于大多数经常需要的东西,标准库头文件<algorithm>有一些东西可以让你喜欢计数。
不要使用基于索引的for循环,而是使用基于范围的for循环,或者使用算法访问集合中的每个元素。

#include <algorithm>
#include <random>
#include <vector>
#include <iostream>
#include <format>

int main()
{
    std::mt19937 generator(std::random_device{}());
    std::uniform_int_distribution<int> distribution(1, 10);

    std::size_t number_of_numbers;

    do
    {
        std::cout << "Enter a number between 1-20 : ";
        std::cin >> number_of_numbers;
    } while ((number_of_numbers < 1) || (number_of_numbers > 20));

    std::vector<int> values(number_of_numbers);
    std::generate(values.begin(), values.end(), [&]
    {
        return distribution(generator);
    });

    for (const auto value : values)
    {
        std::cout << value << " ";
    }
    std::cout << "\n";

    int expected_value;

    do
    {
        std::cout << "Enter a number between 1-10 to count : ";
        std::cin >> expected_value;
    } while ((expected_value < 1) || (expected_value > 10));

    auto count = std::count(values.begin(), values.end(), expected_value);
    std::cout << std::format("That number occurs {} times\n", count);

    return 0;
}

相关问题