C++で秒数を日・時・分・秒に変換する方法
このチュートリアルでは、C++を使って秒数を「日・時・分・秒」の形式に変換するプログラムについて解説します。
具体的には、任意の秒数が与えられたとき、それを適切な日数、時間、分、秒へとそれぞれ変換することを目指します。
変換の考え方
時間の単位は以下のような関係になっています。
- 1日 = 24時間 = 86,400秒(24 × 3600)
- 1時間 = 3,600秒
- 1分 = 60秒
そこで、入力された秒数をまず 86,400 で割って「日数」を求め、その剰余に対して同様に 3,600 で割って「時間」、さらに 60 で割って「分」を算出し、最後に残った値が「秒」となります。
サンプルコード
#include <bits/stdc++.h>
using namespace std;
// 適切な形式に変換する関数
void convert_decimal(int n) {
int day = n / (24 * 3600);
n = n % (24 * 3600);
int hour = n / 3600;
n %= 3600;
int minutes = n / 60;
n %= 60;
int seconds = n;
cout << day << " " << "days " << hour
<< " " << "hours " << minutes << " "
<< "minutes " << seconds << " "
<< "seconds " << endl;
}
int main(){
int n = 126700;
convert_decimal(n);
return 0;
}
実行結果
1 days 11 hours 11 minutes 40 seconds
コードの解説
関数 convert_decimal では、次の手順で各単位の値を計算しています。
- 日数: 入力値 n を 86,400(24時間 × 3,600秒)で割った商
- 時間: 余りを 3,600 で割った商
- 分: さらに余りを 60 で割った商
- 秒: 最後に残った値そのもの
このように、剰余演算(%)と除算を組み合わせることで、複雑なライブラリを使わずとも簡単に秒数を日・時・分・秒へ変換できます。処理はすべて整数演算のみで構成されているため、非常に高速かつシンプルな実装となっています。
-
C++のインクリメント(++)・デクリメント(--)演算子のオーバーロード徹底解説
C++には、インクリメント(++)とデクリメント(--)という2つの重要な単項演算子が用意されています。これらの演算子は、ユーザー定義クラスに対してオーバーロードすることで、オブジェクトを直感的に操作できるようになります。 次の例では、インクリメント演算子(++)を前置(prefix)と後置(postfix)の両方の使い方に対応させてオーバーロードする方法を解説します。同様の方法で、デクリメント演算子(--)もオーバーロード可能です。 前置と後置の違い 前置演算子(++T)は、値をインクリメントした後の値を返します。一方、後置演算子(T++)は、インクリメントする前の元の値を返してからインクリ
-
【Python入門】秒を「時:分:秒」形式に変換する3つの方法
はじめに この記事では、「与えられた秒数を時・分・秒の形式に変換する」という問題に対する解決策を、3つの異なるアプローチとともに分かりやすく解説します。プログラムで経過時間やタイマーを扱う際によく使われる処理なので、ぜひ参考にしてください。 アプローチ1: 算術演算による力任せの方法(ブルートフォース) 剰余演算子(%)と整数除算演算子(//)を組み合わせることで、24時間以内の秒数から時・分・秒をそれぞれ求めることができます。ロジックがシンプルで、標準モジュールに依存しないのが特徴です。 コード例 def convert(seconds): seconds = seconds %