在你的作业1中,你将编写一个程序来生成班上所有学生的成绩, 并计算分布。假设如下:
(1)班上学生人数是[131,162]之间的随机数。 (2)每个学生的成绩是[10,100]之间的随机整数。 (3)如果等级在[10,59],则字母等级为F;如果等级在[60,74],则字母等级为C; 如果等级在[75,84],则字母等级为B;如果成绩在[85,100],则字母等级为A. (4)您应该计算最高等级(分数等级,而不是字母等级)和最低等级(等级等级)。 (4)如需最终输出,请打印以下内容: - 我班上有 *学生! < - A's B的 C's F's - 最高等级是 ! - 最低等级为* *!
请注意,您需要将这些 * 替换为您从程序中生成的数字。可以在附件中找到示例输出的屏幕截图;请注意,其中的数字只是随机生成的。
我正在努力完成这项作业的第一部分,你必须在规定的范围内产生#学生。
这就是我正在做的事情
int randomN;
randomN = rand()% 31+131;
它显然给了我一个数字。我在实现时遇到的问题是数字到数组,范围从1到随机数。我之前和之后都使用过MATLAB,你会做x = 1:randomN之类的东西,它会生成一个数组。我如何在C ++上执行此操作?如果你必须使用循环,请你给我提示吗?谢谢。
答案 0 :(得分:0)
创建一个在给定范围内生成随机数的函数。你可以在网上找到很多,虽然你似乎几乎拥有它:
//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 :(得分:0)
想出一个伪代码算法:
N
,介于131-162 A
N
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;
答案 2 :(得分:-1)
int randomN = rand() % 32 + 131;
std::vector<int> grades;
for (int i = 0; i < randomN; ++i)
grades.push_back(rand() % 91 + 10);