习题5_8图书管理系统(borrowers,acm/icpcworldfinals1994,uva230)(代码片段)

As_zyh As_zyh     2022-12-15     112

关键词:

题目描述:

        你的任务是模拟一个图书管理系统。首先输入若干图书的标题和作者(标题各不相同,以END结束),然后是若干指令:BORROW指令表示借书,RETURN指令表示还书,SHELVE指令表示把所有已归还但还未上架的图书排序后一次插入书架并输出图书标题和插入位置(可能是第一本书或者某本书的后面,也可能是最前面)。
        图书排序的方法是按作者从小到大排,再按标题从小到大排。在处理第一条指令之前,你应当将所有图书按照这种方式排列。

#include<cstdio>
#include<iostream>
#include<vector>
#include<map>
#include<set>
#include<string>
#include<sstream>
using namespace std;

set<pair<string, string> > lbr;   // first is writer, second is book ,图书馆所有书 
map<string, int> IDcache;         // 把书名映射成ID书号(按顺序) 
vector<string>   BOOKcache;       // 根据ID取书 
set<int> in_lbr;                  // 图书馆现存的书 
set<int> borrowed;                // 被借出的书
set<int> back;                    // 已归还未上架的书 

int main()
	#ifdef LOCAL
	freopen("input.txt", "r", stdin);
	freopen("output.txt", "w", stdout);
	#endif
	string line;
	while(getline(cin, line)) 
		if(line[0] == 'E') break;
		string book, writer, s;
		stringstream ss(line);
		int cnt = 0;
		while(ss >> s) 
			if(s == "by") break;
			if(++cnt == 1) book += s;
			else book = book + " " + s;
		
		while(ss >> s) 
			writer += s;
		
		lbr.insert(make_pair(writer, book));
	
	int idx = 0;
	for(set<pair<string, string> >::iterator it = lbr.begin(); it != lbr.end(); it++) 
		IDcache[(*it).second] = idx++;
		BOOKcache.push_back((*it).second);
		in_lbr.insert(IDcache[(*it).second]);
	
	while(getline(cin, line)) 
		if(line[0] == 'E') break;
		string cmd, s;
		stringstream ss(line);
		ss >> cmd;
		int cnt = 0;
		if(cmd[0] == 'B') 
			string book;
			while(ss >> s) 
				if(++cnt == 1) book += s;
				else book = book + " " + s;
			
			int id = IDcache[book];
			in_lbr.erase(id);
			borrowed.insert(id);
		 else if(cmd[0] == 'R') 
			string book;
			while(ss >> s) 
				if(++cnt == 1) book += s;
				else book = book + " " + s;
			
			int id = IDcache[book];
			borrowed.erase(id);
			back.insert(id);
		 else if(cmd[0] == 'S') 
			for(set<int>::iterator it = back.begin(); it != back.end(); it++) 
				cout << "Put " << BOOKcache[*it];
				in_lbr.insert(*it);
				set<int>::iterator it_in_lbr;
				for(set<int>::iterator it_2 = in_lbr.begin(); it_2 != in_lbr.find(*it); it_2++) 
					it_in_lbr = it_2;
				
				if(*it != *in_lbr.begin()) cout << " after " << BOOKcache[*it_in_lbr] << "\\n";
				else  cout << " first\\n";
				
			
			cout << "END\\n";
			back.clear();
		
	 
	return 0;

习题5_9找bug(bughunt,acm/icpctokyo2007,uva1596)(代码片段)

题目描述:        输入并模拟执行一段程序,输出第一个bug所在的行。每行程序有两种可能:        1.数组定义,格式为arr[size]。例如a[10]或者b[5],可用下标分别是0~9和0~4。定义之后所有元素均为未... 查看详情

内部类练习题(静态内部类应用-图书馆管理图书)(代码片段)

packagecom.Summer_0430.cn;/***@authorSummer*定义一所图书馆Library,有*图书*书名*作者*单价*管理图书**要求:创建一所图书馆,管理图书*/classLibrarystaticclassBookprivateStringname;privateStringauthor;privatedoubleprice;publicBook(Stringn 查看详情

codesignal_练习题_extracteachkth(代码片段)

Givenarrayofintegers,removeeach kth elementfromit.ExampleFor inputArray=[1,2,3,4,5,6,7,8,9,10] and k=3,theoutputshouldbeextractEachKth(inputArray,k)=[1,2,4,5,7,8,10]. 我的解 查看详情

习题6-8空间结构(spatialstructures,acm/icpcworldfinals1998,uva806)(代码片段)

输出格式上需要注意细节#include<cstdio>#include<cstring>#include<vector>#include<algorithm>usingnamespacestd;intn;charbuf[100][100];ints[100];intv[10000];vector<int>ans;//十进制数转成翻转的五进制voidten_to_five(intx) intcnt=0; memset(s,0,sizeof... 查看详情

习题6_5巡逻机器人(patrolrobot,acm/icpchanoi2006,uva1600)(代码片段)

越障可以拐弯,一个障碍可能被不同路线所经过,所以普通的dfs不行,再加一个维度step,表示走到此结点越过的障碍数#include<cstdio>#include<cstring>#include<queue>usingnamespacestd;structNode intr,c,step;//step为连续... 查看详情

习题6-8空间结构(spatialstructures,acm/icpcworldfinals1998,uva806)(代码片段)

输出格式上需要注意细节#include<cstdio>#include<cstring>#include<vector>#include<algorithm>usingnamespacestd;intn;charbuf[100][100];ints[100];intv[10000];vector<int>ans;//十进制数转成翻转的五进 查看详情

习题6-8空间结构(spatialstructures,acm/icpcworldfinals1998,uva806)(代码片段)

输出格式上需要注意细节#include<cstdio>#include<cstring>#include<vector>#include<algorithm>usingnamespacestd;intn;charbuf[100][100];ints[100];intv[10000];vector<int>ans;//十进制数转成翻转的五进 查看详情

习题6-8空间结构(spatialstructures,acm/icpcworldfinals1998,uva806)(代码片段)

输出格式上需要注意细节#include<cstdio>#include<cstring>#include<vector>#include<algorithm>usingnamespacestd;intn;charbuf[100][100];ints[100];intv[10000];vector<int>ans;//十进制数转成翻转的五进 查看详情

acm_回文素数(代码片段)

回文素数TimeLimit:2000/1000ms(Java/Others)ProblemDescription:131号是一个主回文,因为它是一个素数和一个回文(当向后读时,它是相同的数字)。编写一个程序,计算两个提供的数字a和b(5<=a<b<=10^8)范围内的主回文数;a和b都被认... 查看详情

简易图书管理系统(代码片段)

简易版图书管理系统项目说明图书管理系统,简单实现书籍的增删改查功能基于狂神的ssm整合技术视频地址:【狂神说Java】SSM框架最新整合教学IDEA版_哔哩哔哩_bilibili用于ssm技术复习回顾使用技术ssm框架技术环境IDEAjdk1.8m... 查看详情

网络与信息安全技术的目录

...络安全及其体系结构1.5网络安全模型1.6网络安全评估准则习题1第2章数据加密与认证2.1数据加密概述2.2传统密码算法2.3对称密钥密码体制2.4非对称密钥密码体制2.5密钥管理2.6数字签名和认证技术习题2第3章网络实体安全3.1防湿和... 查看详情

jdbc-图书管理系统(代码片段)

文章目录JDBC-图书管理系统数据库设计BOOKBoorrowreaderuser数据库系统登录界面管理员界面1:用户登录2:修改密码3:新增用户功能4:删除用户功能5:查询用户(根据用户名模糊查询)UserControlUserService6:新增图书7:删除图书8:修改图书BookControlB... 查看详情

全国计算机等级考试三级linux应用与开发技术考试-习题汇总(代码片段)

...录已过1.考试说明2.第1章-计算机体系结构与操作系统-练习题-选择题3.第1章-计算机体系结构与操作系统-练习题-简答题4.第1章-计算机体系结构与操作系统-练习题-填空题5.第2章-Linux系统概述-练习题6.第3章-Linux系统使用基础-练习... 查看详情

习题

目录1.试述数据、数据库、数据库管理系统、数据库系统的概念。2.使用数据库系统有什么好处?3.试述文件系统与数据库系统的区别和联系。4.举出适合用文件系统而不是数据库系统的应用例子,以及适合用数据库系统的应用... 查看详情

acm-贪心(经典母题+poj一些练习题)(代码片段)

贪心经典母题1、区间问题AcWing905.区间选点AcWing908.最大不相交区间数量AcWing906.区间分组AcWing907.区间覆盖2、Huffman树AcWing148.合并果子3、排序不等式AcWing913.排队打水4、绝对值不等式AcWing104.货仓选址5、推公式AcWing125.耍杂技的牛例... 查看详情

idea+java+servlet+jsp+mysql实现web图书管理系统(代码片段)

目录一、系统介绍1.开发环境2.技术选型3.系统功能4.数据库5.工程截图二、系统展示 1.登录系统2.主页面3.图书列表4.图书详情5.编辑删除6.添加图书7.图书借阅8.图书归还9.借阅记录10.用户管理 三、部分代码BookActionIOActionLoginActionRe... 查看详情

acm-贪心(经典母题+poj一些练习题)(代码片段)

贪心经典母题1、区间问题AcWing905.区间选点AcWing908.最大不相交区间数量AcWing906.区间分组AcWing907.区间覆盖2、Huffman树AcWing148.合并果子3、排序不等式AcWing913.排队打水4、绝对值不等式AcWing104.货仓选址Acwing105.七夕祭(纸牌问题&#x... 查看详情

acm-贪心(经典母题+poj一些练习题)(代码片段)

贪心经典母题1、区间问题AcWing905.区间选点AcWing908.最大不相交区间数量AcWing906.区间分组AcWing907.区间覆盖2、Huffman树AcWing148.合并果子3、排序不等式AcWing913.排队打水4、绝对值不等式AcWing104.货仓选址Acwing105.七夕祭(纸牌问题&#x... 查看详情