zoukankan      html  css  js  c++  java
  • 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
    ";
    	}
    
    	return 0;
    }
    
    bool cm(const book &b1,const book &b2)
    {
    	return b1.id<b2.id;
    }
    
    
  • 相关阅读:
    认识Python
    MongoDB
    K8S搭建过程随笔_证书CFSSL
    K8S搭建过程随笔_系统初始化
    zabbix4.2Proxy安装文档
    Zabbix4.2Server端部署
    单节点FastDFS与Nginx部署
    Windows Server 2016分层式存储,使用PowerShell修改底层介质类型
    kill命令和killall命令
    Nuget使用时遇到的问题,Solved
  • 原文地址:https://www.cnblogs.com/demian/p/6090353.html
Copyright © 2011-2022 走看看