根据参数将数组分成5个不同的数组

时间:2018-01-26 04:43:50

标签: c++ arrays multidimensional-array

所以我正在编写一个程序,我需要生成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)中。

如何将数组正确地分离并存储到另一个数组中,特别是因为我不能定义数组,因为我不知道会有多少值进入它?

2 个答案:

答案 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]);
}