visual Number generating C++

visual Number generating C++

本文关键字:C++ generating Number visual      更新时间:2023-10-16

在你的作业1中,你将编写一个程序来生成你班上所有学生的成绩,然后计算分布。假设如下:

(1)你们班的学生人数是一个介于[131,162]之间的随机数。(2)每个学生的成绩是一个介于[10,100]之间的随机整数。(3)若分数在[10,59],则字母分数为F;如果分数在[60,74],则字母分数为C;如果分数在[75,84],则字母分数为B;如果分数在[85,100]中,则字母分数为A。(4)你应该计算最高分数(点分数,不是字母分数)和最低分数(点分数)。(4)您的最终输出请打印以下内容:——我们班有*个学生!& lt;——的B的 C F——最高等级是!——最低等级是**!

请注意,您需要将这些*替换为您从程序生成的数字。一个示例输出的截图可以在附件中找到;请注意,其中的数字只是随机生成的。

我在作业的第一部分遇到了困难,因为你必须在指定的范围内生成#个学生。

这就是我正在做的

    int randomN;
randomN = rand()% 31+131;

它显然给了我一个数字。我在实现这个数字时遇到的麻烦是从1到随机数的数组。我以前用过MATLAB,在那里你会做一些像x = 1:randomN这样的事情,它会生成一个数组。我如何在c++上做到这一点?如果你必须使用循环,你能给我一些提示吗?谢谢你。

创建一个函数,生成给定范围内的随机数。你可以在网上找到很多,虽然你似乎几乎拥有它:

//return random number from min to max, 
//but not including max, i.e in range [min,max)
int randN(const int min, const int max)
{ 
  return rand() % (max-min)+min; 
}

在随机性方面有一些问题,但这不是这个项目的大问题。现在你可以像这样调用这个函数:

//generate random number from 10 to 100
const int randomGrade = randN(10,101); 
const int randomNumberOfStudents = randN(131,163); 

提出一个伪代码算法:

  1. 计算学生人数,N, 131-162之间
  2. 分配一个数组A,大小为N
  3. 对于i=0-(N-1),生成一个等级g,在10-100之间
  4. 设置A[i] = g;

或者在代码中:

//assumes that you have a helper method `myRandomGen` that takes 
//a min and max value
int numberOfStudents = myRandomGen(131,162);
int* grades = new int[numberOfStudents];
for(int i = 0; i < numberOfStudents; ++i) {
   grades[i] = myRandomGen(10,100);
}

// do something with the array, then free up the memory
delete[] grades;
int randomN = rand() % 32 + 131;
std::vector<int> grades;
for (int i = 0; i < randomN; ++i)
    grades.push_back(rand() % 91 + 10);