⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 2142.cpp

📁 杭电 acm部分代码 有兴趣的可以下载 谢谢
💻 CPP
字号:
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
struct record{
    char name[20];
    int score;
};
bool cmp(record a,record b){
    if(a.score!=b.score)
        return a.score>b.score;
    else
        return strcmp(a.name,b.name)<0;
}
void main()
{
    std::vector<record> recordvec;
    int sum=0;
    char command[20];
    while(cin>>command){
        if(strcmp(command,"NEW")==0){
            vector<record>::iterator iter=recordvec.begin();
            record mem;
            cin>>mem.name>>mem.score;
            int sign=0,c=0;
            while(iter<recordvec.end()){
                if(strcmp(recordvec[c].name,mem.name)==0){
                    sign=1;
                    break;
                }
                iter++;
                c++;
            }
            if(sign==1){
                sum-=recordvec[c].score;
                recordvec.erase(iter);
            }
            recordvec.push_back(mem);
            sum+=mem.score;
            if(sign==0)
                cout<<"A new record\n";
            else
                cout<<"update succeed\n";
        }
        else if(strcmp(command,"AVERAGE")==0){
            if(recordvec.empty()){
                cout<<"0.00\n";
                continue;
            }
            double ave=sum*1.0/recordvec.size();
            printf("%.2lf\n",ave);
        }
        else if(strcmp(command,"MAX")==0){
            if(recordvec.empty()){
                cout<<"0 0\n";
                continue;
            }
            sort(recordvec.begin(),recordvec.end(),cmp);
            int i=0,j=0;
            while(recordvec[i].score==recordvec[0].score)
                i++;
            cout<<recordvec[0].score<<" "<<i<<endl;
            while(j<i)
                cout<<recordvec[j++].name<<endl;
        }
        else if(strcmp(command,"DELETE")==0){
            char deleteone[20];
            vector<record>::iterator iter=recordvec.begin();
            cin>>deleteone;
            int sign=0,c=0;
            while(iter<recordvec.end()){
                if(strcmp(recordvec[c].name,deleteone)==0){
                    sign=1;
                    break;
                }
                iter++;
                c++;
            }
            if(sign==0)
                cout<<"no such record\n";
            else{
                sum-=recordvec[c].score;
                cout<<"delete succeed\n";
                recordvec.erase(iter);
            }

        }
        else if(strcmp(command,"QUIT")==0)
            break;
        memset(command,0,sizeof(command));
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -