C言語では、時間や分のデータを効率的に扱うために構造体を使うことができます。今回は、開始時間と終了時間を構造体で格納し、開始から終了までの時間差を計算するプログラムを作成します。この課題を解決するための手順を、コード例とともに解説します。
構造体を使った時間データの格納
まず、時間と分を格納するために構造体を定義します。この構造体を使って、開始時間と終了時間をそれぞれ保存します。以下のように、時間と分を格納する構造体を定義します。
#include
typedef struct jikan {
int hour;
int minute;
} Jikan;
この構造体を使用することで、時間と分を個別に保存することができます。
ユーザーからの入力を受け付ける
次に、ユーザーから開始時間と終了時間を入力してもらうために、scanfを使います。それぞれの時間と分を入力し、構造体に格納します。
int main() {
Jikan start, end;
// 開始時間の入力
printf("開始時間は何時ですか\n");
scanf("%d", &start.hour);
printf("開始時間は何分ですか\n");
scanf("%d", &start.minute);
// 終了時間の入力
printf("終了時間は何時ですか\n");
scanf("%d", &end.hour);
printf("終了時間は何分ですか\n");
scanf("%d", &end.minute);
// 出力
printf("開始時間は%d時%d分です\n", start.hour, start.minute);
printf("終了時間は%d時%d分です\n", end.hour, end.minute);
}
このコードは、ユーザーに開始時間と終了時間を尋ね、その情報を構造体に格納します。
開始時間から終了時間までの時間差を計算する
次に、開始時間と終了時間の差を計算します。時間と分で計算を行い、差を時間単位と分単位で出力します。まず、終了時間の分数を開始時間の分数から引き、時間の差を求めます。
int totalStartMinutes = start.hour * 60 + start.minute;
int totalEndMinutes = end.hour * 60 + end.minute;
int diffMinutes = totalEndMinutes - totalStartMinutes;
// 時間と分に変換
int hours = diffMinutes / 60;
int minutes = diffMinutes % 60;
printf("開始から終了までの時間は%d時間%d分です\n", hours, minutes);
ここでは、開始時間と終了時間をそれぞれ分に換算し、差分を計算しています。その後、その差分を時間と分の形式に変換して出力します。
動作例
実行例として、以下のような出力が得られるはずです。
開始時間は何時ですか
13
開始時間は何分ですか
10
終了時間は何時ですか
16
終了時間は何分ですか
20
開始時間は13時10分です
終了時間は16時20分です
開始から終了までの時間は3時間10分です
このように、ユーザーが入力した開始時間と終了時間を基に、所要時間を計算し表示します。
まとめ
このプログラムでは、構造体を使用して時間と分を格納し、時間差を計算する方法を学びました。構造体を使うことで、時間のデータを効率的に管理でき、プログラムが整理されます。また、ユーザーからの入力を受け付けることで、動的にデータを扱うことができるようになります。この技術を活用して、さらなるプログラムの作成に挑戦してみてください。

コメント