天梯賽L1-043 閱覽室 模擬題


鏈接:https://pintia.cn/problem-sets/994805046380707840/problems/994805087447138304

 

天梯圖書閱覽室請你編寫一個簡單的圖書借閱統計程序。當讀者借書時,管理員輸入書號並按下S鍵,程序開始計時;當讀者還書時,管理員輸入書號並按下E鍵,程序結束計時。書號為不超過1000的正整數。當管理員將0作為書號輸入時,表示一天工作結束,你的程序應輸出當天的讀者借書次數和平均閱讀時間。

 

注意:由於線路偶爾會有故障,可能出現不完整的紀錄,即只有S沒有E,或者只有E沒有S的紀錄,系統應能自動忽略這種無效紀錄。另外,題目保證書號是書的唯一標識,同一本書在任何時間區間內只可能被一位讀者借閱。

 

輸入格式:

 

輸入在第一行給出一個正整數n

 

書號([1, 1000]內的整數) 鍵值SE) 發生時間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
注意每一次要重置借書記錄,直接寫一個函數轉換時間,不用對string一個一個的進行操作,一借一還之后還可以重復的借書
代碼:
 1 #include<iostream>
 2 #include<cstdio>
 3 #include<map>
 4 #include<cmath>
 5 #include<cstring>
 6 using namespace std;  7 const int maxn=1e3+5;  8 int flag[maxn];//記錄書借出的時間
 9 
10 int check(string s)//將時間轉換為分鍾數
11 { 12     int h=(s[0]-'0')*10+s[1]-'0'; 13     int m=(s[3]-'0')*10+s[4]-'0'; 14     int time=h*60+m; 15     return time; 16 } 17 
18 //重置借書記錄
19 void reset(int book[]) 20 { 21     for(int i=0; i<maxn; i++) 22         book[i]=-1; 23     return; 24 } 25 
26 int main() 27 { 28     int day,id;//記錄天數和書的編號
29     char ch; 30     string s; 31     cin>>day; 32     cin>>id>>ch>>s; 33     int t=0,n=0;//t,借書次數,n,總閱讀時間
34     reset(flag);//大方向重置 
35     while(1) 36  { 37         if(id==0) 38  { 39             reset(flag);//每天結束后都要重置借書記錄
40             double ans;//平均閱讀時間
41             if(t) ans=round(n*1.0/t); 42             else ans=0; 43             cout<<t<<" "<<ans<<endl;//次數和平均時間 
44             day--; 45             t=0; 46             n=0; 47  } 48         
49         else if(ch=='S') flag[id]=check(s);//如果是借書,直接記錄該書借出的時間
50        
51         else if(ch=='E' && flag[id]!=-1) 52         { //如果是還書,那必須是之前借出的,否則視為無效還書記錄不做處理
53             t++;//記錄借書的次數 
54             n+=check(s)-flag[id]; 55             flag[id]=-1;//重置書的編號 
56  } 57         if(day==0) return 0; 58         cin>>id>>ch>>s;//這里沒用數組進行輸入 
59  } 60     return 0; 61 }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM