所以我正在编写一个程序,我需要生成100个随机成绩,然后根据它们的值对它们进行分类。一个是100-90,另一个是89到70; 69-50; 49-20; 19比0。
for(int i = 0; i < 100; i++){
grades[i] = rand() % 100 + 1;
}
我创建了一个循环,将随机生成的数字存储到给定的数组中,等级[100],并希望根据上面给出的信息将它们分类为五个数组。我尝试使用if条件设置另外五个嵌套循环的循环,对于等级,并使用-1的大小来存储if,但意识到它被淘汰了因为我被迫定义我存储它的数组因此,执行sizeof arrayEX [100]将始终返回100并且我将该值连续存储到相同的索引(99)中。
如何将数组正确地分离并存储到另一个数组中,特别是因为我不能定义数组,因为我不知道会有多少值进入它?
答案 0 :(得分:1)
使用std::vector
:
std::vector<std::vector<int>> gradeBuckets(5);
for(int i = 0; i < 100; i++){
int grade = rand() % 100 + 1;
if (grade < 20) {
gradeBuckets[0].push_back(grade);
} else if(grade < 50) {
gradeBuckets[1].push_back(grade);
} else if ...
答案 1 :(得分:1)
为什么不使用STL?例如,std::vector
可以很好地解决这个问题:
for(int i = 0; i < 100; i++){
grades[i] = rand() % 100 + 1;
}
std::vector<int> gradeA, gradeB, gradeC, gradeD, gradeE;
for(int i = 0; i < 100; i++){
if (grades[i]>=90)
gradeA.push_back(grades[i]);
else if (grades[i]>=70)
gradeB.push_back(grades[i]);
else if (grades[i]>=50)
gradeC.push_back(grades[i]);
else if (grades[i]>=20)
gradeD.push_back(grades[i]);
else
gradeE.push_back(grades[i]);
}