#12

C言語:入力した時間(秒)を時間・分・秒に換算するプログラムの作り方

こんにちは!Takuya.B(@TB_IQ)です。

久しぶりにC言語を触って遊んでいます。今日は秒を入力したら、時間・分・秒を算出するプログラムについて解説します。

スポンサーリンク

秒から時間・分・秒へ変換するには?

このような別の単位に変換するプログラムを作るときに意識するポイントは、どの数字で割るのか、それとも余りを出すのかということです。

では、サンプルコードをご覧ください。

サンプルコード

#include <stdio.h>

int main(void)
{
    int input, hour, min, sec;

    printf("時間(秒)を入力してください: ");
    scanf("%d", &input);

    hour = input / 3600;
    min = input % 3600 / 60;
    sec = input % 60;

    printf("%d時間 %d分 %d秒\n", hour, min, sec);
    return 0;
}

今回の場合、変換元の単位は秒です。したがって、3600で割ることで時間が算出されます。

分の算出は入力した秒の3600で割った余り(=秒)を60で割ると算出できます。

最後に秒の算出。入力した秒の60で割った余りが変数secに代入すべき値となります。

別の方法

ちなみに変数min は以下の書き方でも正しく求めることができます。

#include <stdio.h>

int main(void)
{
	int input, sec, min, hour;
	printf("時間(秒)を入力してください:");
	scanf("%d", &input);

	sec = input % 60;
	min = input / 60 % 60;
	hour = input / 3600;

	printf("%d時間 %d分 %d秒\n", hour, min, sec);
	return 0;
}

この方法では入力した input (秒) を 60で割って分に変換して、さらに60で割った余りの値を分として使用しています。

余談 - TaskChuteCloudから社内日報システムへ

私は仕事中に TaskChuteCloud というタスク管理ツールを使って作業ログをとっています。

TaskChuteCloudは作業時間を分単位で算出してくれるのですが、会社の日報システムでは時間・分形式で入力しなければならず、これまで電卓と手計算で算出していました。

ですが今回紹介したプログラムを応用すると、分→時間・分に変換できます。しかも複数回入力した分を合算してから変換するので、一日の中で1つの案件に複数回取り組んだ場合でも計算することができます。

サンプルコード

#include <stdio.h>

int main(void)
{
    int input, time=0, hour, min;

    printf("時間(分)を入力してください(Control+Dで終了)\\n");

    while(scanf("%d", &input) != -1) {
     time += input;
    }

    hour = time / 60;
    min = time % 60;

    printf("%d時間 %d分\n", hour, min);
    return 0;
}

スポンサーリンク

あとがき

一度コツを覚えれば単位の変換は簡単にできるようになります。

というわけで、次回もよしなに!