首页 > 代码库 > PAT A 1022. Digital Library (30)【结构体排序检索】
PAT A 1022. Digital Library (30)【结构体排序检索】
https://www.patest.cn/contests/pat-a-practise/1022
直接模拟,
输入,按id排序,检索
#include <iostream>#include <string>#include <algorithm>using namespace std;struct book //图书结构{ string id; string title; string author; int k; //关键词数量 string key[5]; string pub; string year;};bool cm(const book &b1,const book &b2); //根据id排序int main(){ int n,m,i,j,k; string temp_s; book temp_b,*bks; cin>>n; bks=new book [n]; cin.get(); //字符串输入过滤回车与空格 for(i=0;i<n;i++) //输入书的信息 { getline(cin,bks[i].id); getline(cin,bks[i].title); getline(cin,bks[i].author); getline(cin,temp_s); for(j=0,k=0;j<temp_s.size();j++) { if(temp_s[j]!=‘ ‘) bks[i].key[k]+=temp_s[j]; else k++; } bks[i].k=k+1; getline(cin,bks[i].pub); getline(cin,bks[i].year); } sort(bks,bks+n,cm); //根据id排序 cin>>m; int cl; int flag; //标志是否有找到符合条件的书 for(i=0;i<m;i++) { cin>>cl; cin.get(); //跳过":" cin.get(); //跳过" " flag=0; getline(cin,temp_s); cout<<cl<<": "<<temp_s<<endl; for(j=0;j<n;j++) { switch(cl) { case 1:if(bks[j].title==temp_s) { cout<<bks[j].id<<endl; flag=1; } break; case 2:if(bks[j].author==temp_s) { cout<<bks[j].id<<endl; flag=1; } break; case 3:for(k=0;k<bks[j].k;k++) if(bks[j].key[k]==temp_s) { cout<<bks[j].id<<endl; flag=1; } break; case 4:if(bks[j].pub==temp_s) { cout<<bks[j].id<<endl; flag=1; } break; case 5:if(bks[j].year==temp_s) { cout<<bks[j].id<<endl; flag=1; } break; } } if(flag==0) cout<<"Not Found\n"; } return 0;}bool cm(const book &b1,const book &b2){ return b1.id<b2.id;}
PAT A 1022. Digital Library (30)【结构体排序检索】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。