visual Number generating C++
visual Number generating C++
在你的作业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);
提出一个伪代码算法:
- 计算学生人数,
N
, 131-162之间 - 分配一个数组
A
,大小为N
- 对于i=0-(N-1),生成一个等级
g
,在10-100之间 - 设置
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);