7-8 阅览室 (20 point(s))
天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号输入时,表示一天工作结束,你的程序应输出当天的读者借书次数和平均阅读时间。
注意:由于线路偶尔会有故障,可能出现不完整的纪录,即只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪录。另外,题目保证书号是书的唯一标识,同一本书在任何时间区间内只可能被一位读者借阅。
输入格式:
输入在第一行给出一个正整数N(≤10),随后给出N天的纪录。每天的纪录由若干次借阅操作组成,每次操作占一行,格式为:
书号([1, 1000]内的整数) 键值(S或E) 发生时间(hh:mm,其中hh是[0,23]内的整数,mm是[0, 59]内整数)
每一天的纪录保证按时间递增的顺序给出。
输出格式:
对每天的纪录,在一行中输出当天的读者借书次数和平均阅读时间(以分钟为单位的精确到个位的整数时间)。
输入样例:
3
1 S 08:10
2 S 08:35
1 E 10:00
2 E 13:16
0 S 17:00
0 S 17:00
3 E 08:10
1 S 08:20
2 S 09:00
1 E 09:20
0 E 17:00
输出样例:
2 196
0 0
1 60
思路: 这道题目难度不大,就是模拟图书借阅过程,还书成功时,记录时间次数即可。我在做这道题目的时候是因为最后输出的时候,关于进位出错了。 我用的时第二行的输出,但是就是报错,使用第一行的就通过,如果哪位朋友可以解答以下,烦请指正。
//正确cout << count << " " << (int)(1.0*sum/count + 0.5) << endl;//错误//cout << count << " " << ceil(1.0*sum/count) << endl;
#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;struct Book{char key = 'N';int hh = 0;int mm = 0;
}book[1005];int calculate(int h1,int m1, int h2,int m2);int main(){int n;cin >> n;for(int i = 0; i < n; i++){int sum = 0;int count = 0;while(true){int id;char key,punctuation;int h,m;cin >> id >> key >> h >> punctuation >> m;if(id == 0)break;//还书时应注意情况if(key =='E'){if(book[id].key == 'E' || book[id].key=='N')continue;}if(key == 'E' && book[id].key == 'S'){//还书成功,那么就计算时间啦count++;int time = calculate(book[id].hh,book[id].mm, h, m);sum += time;}//更新书本信息 book[id].key = key;book[id].hh = h;book[id].mm = m;}if(count){//正确cout << count << " " << (int)(1.0*sum/count + 0.5) << endl;//错误//cout << count << " " << ceil(1.0*sum/count) << endl;}else{cout <<"0 0\n";} }return 0;
}
int calculate(int h1,int m1, int h2,int m2){return h2*60+m2 - h1*60-m1;
}
7-8 阅览室 (20 point(s))相关推荐
- L1-043 阅览室 (20 分)(在线模拟题)
L1-043 阅览室 (20 分) 天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时.书号为 ...
- 7-183 阅览室 (20 分)
7-183 阅览室 (20 分) 天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时.书号为不 ...
- L1-043 阅览室 (20 分)andL1-048 矩阵A乘以B (15 分)
L1-043 阅览室 (20 分) 题目: 天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时 ...
- 7-8 阅览室 (20 分)
7-8 阅览室 (20 分) 天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时.书号为不超过 ...
- L1-043 阅览室 (20 分)——memset补充
L1-043 阅览室 (20 分) 天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时.书号为 ...
- C语言 满分代码:L1-043 阅览室 (20分)(解题报告)
立志用更少的代码做更高效的表达 天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时.书号为不超 ...
- L1-043 阅览室 (20分)
题目: 天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时.书号为不超过1000的正整数.当管 ...
- PTA 阅览室 (20 分) 精简版
天梯图书阅览室请你编写一个简单的图书借阅统计程序.当读者借书时,管理员输入书号并按下S键,程序开始计时:当读者还书时,管理员输入书号并按下E键,程序结束计时.书号为不超过1000的正整数.当管理员将0 ...
- 天梯赛 L1-043 阅览室 (20 分)
只需要记录每本书借的时间,初始化为-1表示还未被借阅或者已经被还回来了 涉及除法分母必须分类讨论! #include <iostream> using namespace std; con ...
- L1-043 阅览室 (20 分) java
分析 思路: 只有S没有E,或者只有E没有S的纪录,系统应能自动忽略这种无效纪录. 2.1 S的话就让他直接借,记录下这本书的借出时间,因为此题是当天多次借同一本书,以最后一次借书时间为准: 2.2 ...
最新文章
- Nmap安装和扫描(二:Nmap基本操作)
- 荣耀7x Android8,荣耀8/畅玩7X确认升级安卓8.0
- JS获取请求URL相关参数
- 深度挖掘论文:《Semantic Soft Segmentation》(语义软分割)
- 20191104_1_相关性分析
- 千兆网卡为什么慢_宽带300M,光猫是千兆的,电脑网卡和无线路由器都是千兆的。但是速度仍是100M。这是为什么?...
- 物理课上该怎样使用计算机,物理课堂教学中怎样使用演示课件.doc
- java 随机数性能优化
- vjc机器人灰度怎么编程_求用vc++编程实现显示灰度直方图的详细步骤,越详细越好...
- JavaScript分割字符串
- 用Excel控件做动态图表
- 小刘同学的第一百二十二篇博文
- Zigbee应用之搭建开发环境
- 用户登录模块---Druid+JDBC+Servlet
- windows系统服务器怎么锁屏,使用Windows 8的十个小贴士:自定义锁屏
- 去除Multiple markers at this line - advised by提示
- uniapp 列表搜索模糊查询
- java画板小demo
- EMC——青青子衿,居易安信
- 成功解决 word2019设置背景色为护眼的绿色