UVA-230 图书管理系统
2015-09-06 11:07
357 查看
这道题目是考察stl模板库中map的使用,使用map<string,int>类型保存每本图书的状态,根据不同输入指令实现状态变换即可。另外需要注意的就是对于各种字符串的处理,需要灵活使用各种string类函数。
#include<cstdio> #include<cstdlib> #include<iostream> #include<cstring> #include<algorithm> #include<map> using namespace std; #define LEN 90 #define MAXL 1010 struct Book{ string name; string author; friend bool operator < (Book a,Book b){ if(a.author < b.author) return true; else if(a.author > b.author) return false; else{ if(a.name < b.name) return true; else return false; } } }book[MAXL]; map<string,int> value; int main() { // freopen("input.txt","r",stdin); string a,b; int n=0,i,j,pos; while(getline(cin,a)&&a != "END"){ pos = a.find('\"',1); book .name = a.substr(1,pos); pos += 6; book .author = a.substr(pos-1,a.length() - pos + 1); value[book .name] = 1; n++; } sort(book,book + n); while(cin >> a&&a != "END"){ if(a == "BORROW"){ getchar(); getchar(); getline(cin,b); value[b] = 0; } else if(a == "RETURN"){ getchar(); getchar(); getline(cin,b); value[b] = 2; } else if(a == "SHELVE"){ for(i = 0 ; i < n ; i++) { if(value[book[i].name] == 2){ for(j = i-1 ; j >= 0 ; j--)//注意最后有可能j=-1 { if(value[book[j].name] == 1) break; } cout<<"Put \""<<book[i].name<<' '; if(j != -1) cout<<"after \""<<book[j].name<<'\n'; else cout<<"first"<<'\n'; value[book[i].name] = 1; } } cout<<"END"<<'\n'; } } return 0; }
相关文章推荐
- android 代码实现控件之间的间距
- [Android]在代码里运行另一个程序的方法
- 肯特·贝克:改变人生的代码整理魔法
- 网页恶意代码的预防
- 高手写的Tracer-Flash代码调试类代码下载
- CSS代码缩写技巧
- 非主流Q-zOne代码代码搜集第1/2页
- 修复mysql数据库
- CreateWeb.vbs 代码
- Lua中编译执行代码相关的函数详解
- 更有效率的css代码编写第1/3页
- nodejs中的fiber(纤程)库详解
- 代码中到底应不应当写注释?
- 浅析STL中的常用算法
- STL区间成员函数及区间算法总结
- SQL语言查询基础:连接查询 联合查询 代码
- 论坛头像随机变换代码
- 桌面中心(一)创建数据库
- .NET 常用功能和代码小结
- C#实现压缩HTML代码的方法