iT邦幫忙

2022 iThome 鐵人賽

DAY 4
0
自我挑戰組

C++30日挑戰之旅系列 第 4

DAY4 時間轉換的方法與C++餘數介紹

  • 分享至 

  • xImage
  •  

題目:

如果一年是12個月,一個月都是30天,一天是24小時,1小時是60分,1分是60秒。讓使用者輸入一正整數代表總秒數,然後轉換成 年 月天時分 秒。

例如:使用者輸入90654。你的程式會輸出0 0 1 1 10 54\n。
代表90654秒=0年0月1天1時10分54秒

並且可以利用%/


解法:

#include <iostream>
using namespace std;
int main()
{
     int s;
     cin >> s;
     cout << s / (60 * 60 * 24 * 30 * 12)<< " ";//年
     s = s % (60 * 60 * 24 * 30 * 12);
     cout << s / (60 * 60 * 24 * 30)<< " ";//月
     s = s % (60 * 60 * 24 * 30);
     cout << s / (60 * 60 * 24)<< " ";//日
     s = s % (60 * 60 * 24);
     cout << s /(60 * 60)<< " ";//時
     s = s % (60 * 60);
     cout << s / 60<< " ";//分
     s = s % 60;
     cout << s << " ";//秒
}

解釋與詳細介紹:

第一部分:主功能解析

首先這題我們要先確立各個時間單位所代表的數值

input:秒
output:年 月 日 時 分 秒

在轉換的過程中,我們可以知道:

一年為(60 * 60 * 24 * 30 * 12)秒
一個月為(60 * 60 * 24 * 30)秒
一天為(60 * 60 * 24)秒
一小時為(60 * 60)秒
而一分鐘有60秒

那麼在輸出時,第一個數字,也就是"年"數便可以用除法/來得到。而這裡補充說明,在程式裡的除法是以"被除數和除數的數字型態決定"商"的型態。若是皆為整數時,結果便會以商的整數值代替;而當兩者其中之一為浮點數型態時,那結果便會以浮點數的方式替代之。

再來我們要介紹到一個新的符號,"%"(也就是數學上的mod,餘數的意思)。程式上以"被餘數 % 餘數"的方式表示。因為我們的input s會隨著一次一次的除法而越變越小,所以每當我們做完一次除法時就需要重新定義我們現在的s所代表的數值,才不會使得結果出現"溢位"的狀況(如:當已經在算天數時卻發現天數總和為35天,那就應該記作"1 5",一個月又五天,而非"0 35",35天)
在一次次疊代表示後,我們就可以得到所求的output了!

第二部分:成果展示

https://ithelp.ithome.com.tw/upload/images/20220905/20151593FreaZMULJz.png

這裡因為參雜許多數字的餘數與除數觀念,在做的時候也要多接留意喔!那我們明天繼續八~


上一篇
DAY3 C++遇上數學運算的火花
下一篇
DAY5 if/else與星座的愛恨情仇
系列文
C++30日挑戰之旅43
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言