C言語で時間と分を格納する構造体を使ったプログラムの作成方法

C言語関連

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分です

このように、ユーザーが入力した開始時間と終了時間を基に、所要時間を計算し表示します。

まとめ

このプログラムでは、構造体を使用して時間と分を格納し、時間差を計算する方法を学びました。構造体を使うことで、時間のデータを効率的に管理でき、プログラムが整理されます。また、ユーザーからの入力を受け付けることで、動的にデータを扱うことができるようになります。この技術を活用して、さらなるプログラムの作成に挑戦してみてください。

コメント

タイトルとURLをコピーしました