C++
 Computer >> コンピューター >  >> プログラミング >> C++

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 では、次の手順で各単位の値を計算しています。

  1. 日数: 入力値 n を 86,400(24時間 × 3,600秒)で割った商
  2. 時間: 余りを 3,600 で割った商
  3. 分: さらに余りを 60 で割った商
  4. 秒: 最後に残った値そのもの

このように、剰余演算(%)と除算を組み合わせることで、複雑なライブラリを使わずとも簡単に秒数を日・時・分・秒へ変換できます。処理はすべて整数演算のみで構成されているため、非常に高速かつシンプルな実装となっています。

  1. C++のインクリメント(++)・デクリメント(--)演算子のオーバーロード徹底解説

    C++には、インクリメント(++)とデクリメント(--)という2つの重要な単項演算子が用意されています。これらの演算子は、ユーザー定義クラスに対してオーバーロードすることで、オブジェクトを直感的に操作できるようになります。 次の例では、インクリメント演算子(++)を前置(prefix)と後置(postfix)の両方の使い方に対応させてオーバーロードする方法を解説します。同様の方法で、デクリメント演算子(--)もオーバーロード可能です。 前置と後置の違い 前置演算子(++T)は、値をインクリメントした後の値を返します。一方、後置演算子(T++)は、インクリメントする前の元の値を返してからインクリ

  2. 【Python入門】秒を「時:分:秒」形式に変換する3つの方法

    はじめに この記事では、「与えられた秒数を時・分・秒の形式に変換する」という問題に対する解決策を、3つの異なるアプローチとともに分かりやすく解説します。プログラムで経過時間やタイマーを扱う際によく使われる処理なので、ぜひ参考にしてください。 アプローチ1: 算術演算による力任せの方法(ブルートフォース) 剰余演算子(%)と整数除算演算子(//)を組み合わせることで、24時間以内の秒数から時・分・秒をそれぞれ求めることができます。ロジックがシンプルで、標準モジュールに依存しないのが特徴です。 コード例 def convert(seconds): seconds = seconds %