我们班布置的一个课程设计,是做一个小MIS,关于存放学生成绩的数据库。我建了一个类,用对象数组存储信息,而学号就是数组下标。其中需要实现的一个功能就是按某一成绩排序输出,如果用自定义sort排序的话学号就会随之改变,所以我不知道该怎么处理。请求大神指教!!
你可以这样。
新建一个数组,将原数组数据全部复制到该数组里。
然后双重for循环遍历这个新的数组。
最外层for循环是用来输出成绩的最大值。
最里层for循环是用来寻找成绩的最大值,当找到最大值,赋值给一个遍历,然后将数组的最大值赋值一个负数。
依次这样循环,就可以将成绩顺序输出了。
struct student
{
string id;
string name;
int mathPoint;
int englishPoint;
}
然后排序算法里面比较成绩来交换顺序
可以吧学号也做一个数组,排序的时候比较的是成绩的大小,但是调整的时候调整序号数组就可以了。
比如你成绩数组int score1[10],int xuehao[10],
先复制一个成绩数组int scoretmp[10];把score1的数据拷贝到scoretmp中,
排序比较的时候是
if(scoretmp[j] > scoretmp[j+1] )
{
tmp = scoretmp[j];
scoretmp[j] = scoretmp[j+1];
scoretmp[j+1] = tmp;
tmp = xuehao[j];
xuehao[j] = xuehao[j+1];
xuehao[j+1] = tmp;
}
这样不管用哪个成绩排序,调整的都是学号数组。如果用科目2的成绩排序时,把学号下标重置回去,在重新用上面的逻辑排序就是了。
你得将学号和成绩组成数据结构,然后数据结构形成数组,按成绩排序
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
如果是C++的话,可以使用sort函数。假设科目1的成绩数组是cj1[10],对应的学号数组是int xh[10],sort函数使用方法如下:
sort(xh,xh+10,[&](const int& a, const int& b) {
return (cj[a] > cj[b]);
});
这样就会根据成绩大小对学号数组进行排序。