C++图书馆读者平均借书时间统计程序
C++图书馆读者平均借书时间统计程序
该程序用于统计图书馆每个读者的平均借书时间。
程序功能
程序从输入中读取一系列借书和还书记录,并根据这些记录计算每个读者的平均借书时间。
设计思路
- 从输入中读取一个整数n,表示读者的数量。
- 使用一个循环,循环n次,每次处理一个读者的借书记录。
- 对于每个读者,使用一个循环,循环读取借书和还书记录,直到读取到一个书号为0的记录。
- 对于每个借书记录,记录借书的时间,并将该书号标记为已借状态。
- 对于每个还书记录,如果对应的书号已经借出,则计算借书时间并累加到总借书时间中,并将该书号标记为未借状态。
- 统计借书次数和总借书时间,并计算平均借书时间。
- 输出借书次数和平均借书时间。
结构说明
- 定义一个常量MAXN表示最大的读者数量。
- 使用一个循环读取n个读者的借书记录。
- 对于每个读者,使用一个循环读取借书和还书记录。
- 在循环中,使用变量a表示书号,变量c表示借书或还书的操作,变量h和m表示借书或还书的时间。
- 使用数组minute存储每本书的借书时间,使用数组f标记每本书的借书状态。
- 在循环中,根据借书或还书的操作,更新借书时间和借书状态。
- 在循环结束后,根据借书次数和总借书时间计算平均借书时间,并输出结果。
代码示例
#include<iostream>
#define MAXN 1005
using namespace std;
int main()
{
int n;
cin >> n;
while(n--)
{
int a=1;
double sum=0;
int num=0,minute[MAXN]={0};
bool f[MAXN]={false};
while(a!=0)
{
char c;
int h,m;
scanf("%d %c %d:%d", &a, &c, &h, &m);
if(a==0)
break;
//借书
else if(c=='S')
{
minute[a]=h*60+m;
f[a]=true;
}
else if(c=='E')
{
//如果有借 继续处理
if(f[a])
{
sum+=h*60+m-minute[a];
f[a]=false;
num++; //次数加加
}
}
}
if(num==0)
cout << "0 0\n";
else
{
sum/=num;
int t = sum+0.5f; //四舍五入
cout << num << " " << t << endl;
}
}
return 0;
}
原文地址: http://www.cveoy.top/t/topic/p6on 著作权归作者所有。请勿转载和采集!