当前位置: 代码迷 >> 综合 >> [PAT][Basic level] 1015 code review
  详细解决方案

[PAT][Basic level] 1015 code review

热度:62   发布时间:2023-12-05 22:57:48.0

Not AC Code:(one problem to be resolved)
KeyWrods: sort();bool cmp();#include “algorithm”;the diffirence between qsort() and sort();struct;typedef (关键字替换);

#include <cstdio>
#include <iostream>
#include <cstring>
#include <iomanip>
#include <cmath>
#include <algorithm>
using namespace std;
typedef struct student{
    int number;int score_de;int score_cai;int classy = 0;int sum = 0;
}student;void print (student * stu,int classy ,int n,int count_class)  ;
bool cmp( struct student a , struct student b);
int main()
{
    int n,l,h;int m=0;int count_class1 = 0,count_class2 = 0 ,count_class3 = 0,count_class4 = 0; cin>>n>>l>>h;student * stu;stu = (student *)malloc(sizeof(student)*n);for( int  i = 0 ; i < n ; i ++){
    cin>>stu[i].number>>stu[i].score_de>>stu[i].score_cai;stu[i].sum = stu[i].score_de + stu[i].score_cai ;   //sumif(stu[i].score_de > l &&stu[i].score_cai > l || stu[i].score_de == l|| stu[i].score_cai == l){
    m ++;if(stu[i].score_de > h  ||stu[i].score_de == h ){
    if(stu[i].score_cai > h || stu[i].score_cai == h){
    stu[i].classy = 1 ;count_class1 ++;}else {
    stu[i].classy = 2 ;count_class2 ++;}}else if(stu[i].score_de > stu[i].score_cai || stu[i].score_de == stu[i].score_cai){
    stu[i].classy = 3;count_class3  ++;}else {
    stu[i].classy = 4;count_class4 ++;}}}cout<<m<<endl;print(stu,1,n,count_class1);//classy == 1print(stu,2,n,count_class2);print(stu,3,n,count_class3);print(stu,4,n,count_class4);return 0;
}void print (student * stu,int classy ,int n,int count_class)  {
    student * stu_output ;stu_output = (student *) malloc(sizeof(student)*count_class);int j = 0 ;for(int i = 0 ; i < n ; i ++){
    if(stu[i].classy == classy){
    stu_output[j++] = stu[i] ;  }}sort(stu_output,stu_output+count_class,cmp);for(int i = 0 ; i < count_class ; i ++){
    cout<<stu_output[i].number<<" "<<stu_output[i].score_de<<" "<<stu_output[i].score_cai<<endl;}//cout<<endl;return ;
}
bool cmp( struct student a , struct student b){
    if(a.sum < b.sum){
    return a.sum > b.sum ;}else if (a.sum == b.sum ){
    if(a.score_de < b.score_de){
    return a.score_de > b.score_de;}else if (a.score_de == b.score_de){
    if(a.number > b.number){
    return a.number < b.number;}}}
}
  相关解决方案