文件内有一堆数据,需要设计程序先读取文件内数据进入结构体数组,再输入k,输出前k名,并列成绩的输出相同名次
文件数据如下:20201100097 Eiuqhu 69 68 100
20201100298 Vyjap 83 88 100
20201100327 Kpvihj 64 96 100
20201100335 Kzygeefh 85 52 100
20201100351 Hlikid 57 31 100
20201100412 Fwfua 60 85 100
20201100621 Vfpatbv 88 99 100
20201100673 Sfaj 87 92 100
20201100749 Kqilg 82 85 100
20201100817 Tmh 91 99 100
20201101022 Sdbyr 74 41 100
20201101424 Oauucz 43 76 100
20201101523 Xygp 45 44 100
20201101554 Kaq 84 32 100
20201101600 Lrormn 65 83 100
20201101631 Krcvoqvk 98 39 100
20201101640 Wzpszlp 87 35 100
20201101721 Fyeur 57 86 100
20201101922 Tnk 65 62 100
20201101938 Eulv 35 39 100
20201101958 Qtzqr 38 89 100
20201101985 Wgapxmcn 91 61 100
20201102013 Tzsomhcu 80 90 100
20201102191 Pdyhxs 32 49 100
20201102298 Pgsmkyui 83 87 100
20201102344 Lrzcyu 47 54 100
20201102417 Pczj 85 55 100
20201102564 Cko 86 51 100
20201102589 Maj 90 34 100
20201102678 Kdffgb 48 78 100
20201102738 Hsmrapf 49 38 100
20201102762 Lwfuj 87 37 100
20201102785 Tezoha 96 90 100
20201102836 Bnsfbxwl 79 33 100
20201102903 Snnsvzd 86 48 100
20201102989 Hutb 45 82 100
20201103019 Nmih 72 88 100
20201103109 Ulxvl 60 37 100
20201103154 Uktjiu 69 88 100
20201103239 Plrzkaxp 75 40 100
20201103254 Vglbm 41 38 100
20201103321 Vzuwmm 70 93 100
20201103384 Nnp 83 54 100
20201103493 Wmwkldu 56 83 100
20201103543 Dpachbr 39 42 100
20201103618 Qks 39 98 100
20201103629 Nia 69 86 100
20201103757 Rqrjm 41 64 100
20201103897 Ehhe 97 87 100
20201103956 Tuqscez 58 88 100
20201104016 Gtjhuxor 79 38 100
20201104057 Bxyime 58 44 100
20201104178 Ehbre 32 65 100
20201104647 Pshwgcml 48 74 100
20201104717 Sswfto 42 58 100
20201104719 Saub 45 98 100
20201104877 Fkpxc 81 41 100
20201104906 Vyeheaqs 66 40 100
20201104919 Asrdor 38 77 100
20201104997 Beeww 44 80 100
20201105101 Mgjsaq 46 32 100
20201105250 Carmfuxp 71 64 100
20201105343 Enozhpz 57 52 100
20201105386 Aqhnhm 36 94 100
20201105417 Aui 59 49 100
20201105447 Spif 77 53 100
20201105540 Mzbrn 65 54 100
20201105808 Ddwzk 48 92 100
20201105809 Sxkc 70 43 100
20201105909 Ziger 85 38 100
20201105936 Tgovip 91 55 100
20201105943 Rbn 82 72 100
20201105970 Gqf 67 100 100
20201106014 Ynj 90 69 100
20201106073 Hrmm 55 57 100
20201106119 Mnwjfkl 36 59 100
20201106335 Pjj 40 51 100
20201106419 Bsnahiuf 64 84 100
20201106484 Lqpt 32 69 100
20201106498 Ids 85 96 100
20201106601 Fjqflg 38 46 100
20201106743 Dqyzs 83 95 100
20201106861 Ifet 31 66 100
20201106896 Vqoeqrjj 100 80 100
20201106953 Ymgqyckf 95 89 100
20201106955 Glqep 70 99 100
20201106970 Kono 99 55 100
20201106983 Dsfjttjy 50 37 100
20201107000 Pqzmlr 50 88 100
20201107223 Lghznb 97 93 100
20201107226 Aubjouoz 68 35 100
结构体如下:
struct code
{
string num;
string name;
int a, b, c, t;
}data[M];
导入文件数据如下:
#include
#include
#include
#include
#define M 11000
#include
#include
#include
using namespace std;
struct code
{
string num;
string name;
int a, b, c, t;
}data[M];
void load_data(code data[], int &cnt)
{
ifstream in;
in.open("C:\\Users\\Administrator\\Desktop\\期末大作业data.txt", ios::in|ios::binary);
if(!in.is_open())
{
cout << "文件打开失败" << endl;
exit(1);
}
int i = 0;
for(i; !in.eof(); i++)
{
in >> data[i].num >> data[i].name >> data[i].a >> data[i].b >> data[i].c;
data[i].t = data[i].a + data[i].b + data[i].c;
cnt = i;
}
in.close();
}
我需要编写一个look函数,输入k值后,输出总分t的前k名,相同分数的名次相同,格式如图
请教各位这个函数应该怎么写,只有框架和思路也可以的,我暂时一点头绪都没有
我困惑的点在于怎么判断我需要输出多少个,如图,前10名总共输出了12个数据
以及我要采用什么方法,是先排序所有数据再输出还是由大到小依次输出
麻烦各位了
使用某一种排序算法,比如说快排,那就直接结构体数组sort一下,写一个cmp函数(当然如果对稳定性有要求,可以用其他排序方式,比如说冒泡;但是分数好像最多300分,也可以使用非比较排序,速度更快,比如说桶排)