C++ 根据参数将数组分为5个不同的数组
所以我正在写一个程序,我需要生成100个随机分数,然后根据它们的值对它们进行分类。一种为100-90,另一种为89-70;69-50; 49-20; 19比0C++ 根据参数将数组分为5个不同的数组,c++,arrays,multidimensional-array,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; } for(int i=0;i
for(int i = 0; i < 100; i++){
grades[i] = rand() % 100 + 1;
}
for(int i=0;i<100;i++){
等级[i]=rand()%100+1;
}
我创建了一个循环,将随机生成的数字存储到给定的数组grades[100],并希望根据上面给定的信息将它们再分类为五个数组。我尝试用另外五个嵌套循环来创建另一个循环,其中设置了一个if条件,用于等级,并使用数组的大小-1来存储if,但意识到它出了问题,因为我不得不定义存储它的数组。因此,执行sizeof arrayEX[100]将始终返回100,并且我将该值连续存储到同一索引(99)中
我如何将一个数组正确地分离并存储到另一个数组中,尤其是因为我不知道将有多少个值进入数组,所以无法定义数组?使用
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 ...
std::向量分级桶(5);
对于(int i=0;i<100;i++){
int grade=rand()%100+1;
if(等级<20){
平地铲斗[0]。推回(平地);
}否则,如果(等级<50){
平地铲斗[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 ...
std::向量分级桶(5);
对于(int i=0;i<100;i++){
int grade=rand()%100+1;
if(等级<20){
平地铲斗[0]。推回(平地);
}否则,如果(等级<50){
平地铲斗[1]。推回(平地);
}否则如果。。。
为什么不使用STL?例如,它可以很好地解决这一问题:
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]);
}
for(int i=0;i<100;i++){
等级[i]=rand()%100+1;
}
std::媒介等级A、B、C、等级E、等级E;
对于(int i=0;i<100;i++){
如果(等级[i]>=90)
A级。推回(等级[i]);
否则,如果(等级[i]>=70)
B级。推回(等级[i]);
否则,如果(等级[i]>=50)
C级。推回(等级[i]);
否则,如果(等级[i]>=20)
分级。推回(分级[i]);
其他的
等级E.推回(等级[i]);
}
为什么不使用STL?例如,它可以很好地解决这一问题:
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]);
}
for(int i=0;i<100;i++){
等级[i]=rand()%100+1;
}
std::媒介等级A、B、C、等级E、等级E;
对于(int i=0;i<100;i++){
如果(等级[i]>=90)
A级。推回(等级[i]);
否则,如果(等级[i]>=70)
B级。推回(等级[i]);
否则,如果(等级[i]>=50)
C级。推回(等级[i]);
否则,如果(等级[i]>=20)
分级。推回(分级[i]);
其他的
等级E.推回(等级[i]);
}
谢谢!我的教授从来没有教过我vector,所以我从来没有用过它,我想它比new(?)好,因为它在c9中的效果不如我的ide(idk为什么)谢谢!我的教授从来没有教过我vector,所以我从来没有用过它,我想它比new(?)好,因为它在c9中的效果不如我的ide(idk为什么)