考试3

    xiaoxiao2021-03-26  27

    题目3

      (2 满分) 题目描述

    正值高考录取阶段,现在有一份考生志愿填报文件,文件名为datain.txt,文件中一共有三所候选大学,A,B和C,文件第一行分别为三所大学的录取人数上限,以空格隔开。

    后面若干行(小于十万条)为具体的考生报考信息,具体格式为:考号 成绩 平行志愿1 平行志愿2。按照成绩从高到低的顺序排列(没有重分,满分750分)以下内容为datain.txt文件示例(仅仅是示例,考号和成绩均不具有参照性):

    1 1 1

    2015001 600 A B

    2015002 580 A C

    2015003 555 C B

    2015004 500 A B

    然后要求将A B C 三所大学的录取人数以及录取的最低分数写入一个文件名为dataout.txt的文件,内容为A大学最终录取人数,然后空格,然后录取的最低分数,然后空格,然后B大学录取人数,空格,录取最低分数,空格,C大学录取人数,空格,分数。

    以上述题干为例,那么2015001可以被A大学顺利录取,2015002就无法进入A大学,只能被C大学录取,同理,2015003只能被B大学录取,2015004将无学可上。。所以写入dataout.txt文件的内容应该如下:

    1 600 1 555 1 580

    输入格式

    输出格式

    样例输入

    见题目描述示例

    样例输出

    见题目描述示例

    代码框

    #include <iostream> #include <fstream> #include <vector> #include <string> //#include <algorithm> using namespace std; struct Student{ int id; int grade; string app_1,app_2; bool operator>(const Student&s)const; }; bool Student::operator>(const Student&s)const{return this->grade>s.grade;} int A,B,C; int min(int x,int y){ if(x<y) return x; else return y; } int main(){ ifstream file("datain.txt"); file>>A>>B>>C; //cout<<A<<" "<<B<<" "<<C<<endl; vector<Student>ss; while(!file.eof()){ Student s; file>>s.id>>s.grade>>s.app_1>>s.app_2; //cout<<s.id<<" "<<s.grade<<" "<<s.app_1<<" "<<s.app_2<<endl; ss.push_back(s); } file.close(); //sort(ss.begin(),ss.end(),greater<Student>()); //题上说了本来就是从高到底排列了,这里没有必要 int countA=0,countB=0,countC=0; int minA=750,minB=750,minC=750; for(int i=0;i<ss.size();i++){ if((ss[i].app_1=="A"&&countA<A)||(ss[i].app_1=="B"&&countB<B)||(ss[i].app_1=="C"&&countC<C)){ if(ss[i].app_1=="A"&&countA<A){ countA++; minA=ss[i].grade; } if(ss[i].app_1=="B"&&countB<B){ countB++; minB=ss[i].grade; } if(ss[i].app_1=="C"&&countC<C){ countC++; minC=ss[i].grade; } } else if(ss[i].app_2=="A"&&countA<A){ countA++; minA=ss[i].grade; } else if(ss[i].app_2=="B"&&countB<B){ countB++; minB=ss[i].grade; } else if(ss[i].app_2=="C"&&countC<C){ countC++; minC=ss[i].grade; } } ofstream outfile("dataout.txt"); outfile<<min(A,countA)<<" "<<minA<<" "<<min(B,countB)<<" "<<minB<<" "<<min(C,countC)<<" "<<minC; outfile.close(); //for(int i=0;i<ss.size();i++) //delete ss[i]; return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-658772.html

    最新回复(0)