【问题标题】:How to populate an array with a user-defined number of random values如何使用用户定义的随机值数量填充数组
【发布时间】:2020-03-10 18:59:04
【问题描述】:

正在进行一项练习,我认为我已经非常接近正确了。提示要求我让用户说出他们想要生成多少个随机数,然后生成那么多随机数。为简单起见,我将随机数设为 0-1000。我们也在练习使用文件,所以我们希望将其写入文件。

#include <iostream>
#include <fstream>
#include <ctime>

int main()
    {
    int userinput,i, N, rdnum[N];
    std::ofstream ofs;

    std::cout << "How many random numbers do you want to generate?\n";
    std::cin >> N;

    srand(time(0));
    rdnum[N] = rand() % 1001;

    ofs.open("rand_numbers.txt");

    if (!ofs)
    {
        std::cout << "Open error\n";
        exit(0);
    }

    else if (ofs.good())
    {
        for (i = 0; i < N; i++)
        {
            std::cout << "Random numbers: " << rdnum[i] << std::endl;
            ofs << rdnum[i] << std::endl;
        }
    }
}

谢谢!

【问题讨论】:

  • 您当前没有在代码中使用std::vector。你想使用std::vector吗?
  • 请参阅here 了解如何在循环中生成随机数,了解here 了解如何将元素添加到向量中。您还可以查看std::randstd::vector 参考页面。
  • @John 如果可能的话,我不想使用向量,尽管有人已经建议使用它可能会更好。在课堂上我们现在正在使用数组,我们甚至还没有接触过向量。这是一门非常初级的课程。
  • @John 我会检查一下,谢谢!
  • 看起来你已经知道如何在你的输出循环中遍历数组,所以我会说你应该做同样的事情来生成你的随机值。遍历数组,在每次迭代时生成一个随机值,并将该值分配给数组的当前索引。

标签: c++ arrays loops random


【解决方案1】:
int userinput,i, N, rdnum[N];

在这里,您声明了一个整数 N,并留下一个不确定的值。

您还声明了一个长度为N 的数组。像这样使用不确定值的行为是未定义的。

此外,N 不是运行时常量值,因此将其用作自动数组的大小是不正确的。

要创建一个运行时大小的数组,您必须使用动态存储。创建动态数组的最简单方法是使用std::vector。请注意,对于这个简单的程序,不需要数组,因为您可以直接在生成随机数的循环中输出随机数。

【讨论】:

  • 啊不知道我不能这样做,谢谢,我会修复它,看看它是否有帮助!我想既然用户输入了 N 的值,我可以将其留空
  • @Kyle 在 C++ 中的顺序很重要。您不能像 c = a + b; 这样布置 n 表达式,并期望在稍后在程序中更改 ab 时更新 c。如果表达式在提供 ab 之前的代码中,则在提供 ab 之前计算 c。如果您希望在提供ab 之后计算c(或在更改它们之后重新计算),您必须自己做。 As If Rule 可以在某事发生(或即使发生)时启动并准确更改,但不会更改编码行为。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-23
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
相关资源
最近更新 更多