0
点赞
收藏
分享

微信扫一扫

【PAT甲级】1022 Digital Library (30 分)测试点1、3、4

q松_松q 2022-03-11 阅读 64
c++

一开始拿了19分,搜了搜别人代码都是用string的,突然反应过来id用int可能会导致输出id不正确(比如是0000000什么的),改了以后就全都过啦!
代码没有用map,如下:

#include<bits/stdc++.h>
using namespace std;

int N,M;
struct book{
    string id,year;
    string title,author,key,publisher;
};

book bk[10001];

int sorts[1001];

int flag=0;

bool comp(book a,book b){
    return a.id<b.id;
}

int main()
{
    cin>>N;
    int i,j,k,l;
    string s1,s2,s3,s4;
    for(i=0;i<N;i++){
        cin>>bk[i].id;
        getchar();
        getline(cin,bk[i].title);
        getline(cin,bk[i].author);
        getline(cin,bk[i].key);
        getline(cin,bk[i].publisher);
        cin>>bk[i].year;
    }
    sort(bk,bk+N,comp);
    cin>>M;
    for(i=0;i<M;i++){
        cin>>sorts[i];
        getchar();getchar();
        cout<<sorts[i]<<": ";
        switch(sorts[i]){
            case 1:{
                getline(cin,s1);
                cout<<s1<<endl;
                for(j=0;j<N;j++){
                    if(bk[j].title==(s1)){
                        cout<<bk[j].id<<endl;
                        flag=1;
                    }
                }
                if(flag==0){
                    cout<<"Not Found"<<endl;
                }
                flag=0;
            };break;

            case 2:{
                getline(cin,s1);
                cout<<s1<<endl;
                for(j=0;j<N;j++){
                    if(bk[j].author==(s1)){
                        cout<<bk[j].id<<endl;
                        flag=1;
                    }
                }
                if(flag==0){
                    cout<<"Not Found"<<endl;
                }
                flag=0;
            };break;

            case 3:{
                getline(cin,s1);
                cout<<s1<<endl;
                for(j=0;j<N;j++){
                    if(bk[j].key.find(s1)!=string::npos){
                        cout<<bk[j].id<<endl;
                        flag=1;
                    }
                }
                if(flag==0){
                    cout<<"Not Found"<<endl;
                }
                flag=0;
            };break;

            case 4:{
                getline(cin,s1);
                cout<<s1<<endl;
                for(j=0;j<N;j++){
                    if(bk[j].publisher==(s1)){
                        cout<<bk[j].id<<endl;
                        flag=1;
                    }
                }
                if(flag==0){
                    cout<<"Not Found"<<endl;
                }
                flag=0;
            };break;

            case 5:{
                cin>>s1;
                cout<<s1<<endl;
                for(j=0;j<N;j++){
                    if(bk[j].year==s1){
                        cout<<bk[j].id<<endl;
                        flag=1;
                    }
                }
                if(flag==0){
                    cout<<"Not Found"<<endl;
                }
                flag=0;
            };break;
        }
    }
}
举报

相关推荐

0 条评论