生成C ++的数字

时间:2013-06-02 23:39:37

标签: c++ visual-c++

在你的作业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 ++上执行此操作?如果你必须使用循环,请你给我提示吗?谢谢。

3 个答案:

答案 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)

想出一个伪代码算法:

  1. 计算学生人数N,介于131-162
  2. 之间
  3. 分配大小为A
  4. 的数组N
  5. 对于i = 0-(N-1),生成等级g,介于10-100之间
  6. 设置A[i] = g;
  7. 或代码:

    //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);