【Cブラシ記録】計算時間差
15101 ワード
タイトル:構造体でクロックタイプを定義し、プログラミングでキーボードから任意に2つの時間(例えば4時55分と1時25分)を入力し、この2つの時間の間隔を計算して出力します.時間差のマイナス記号を出力しないことが要求されます.構造体タイプの定義は以下の通りです.
関数のプロトタイプ:
関数機能:2つの時間t 1とt 2の差分プログラムの実行結果を計算して返す例1:
プログラム実行結果例2:
入力プロンプト:「Input time one:(hour,minute):」「Input time two:(hour,minute):」入力フォーマット:「%d,%d」出力フォーマット:「%dhour,%dminute」
プログラム:プログラム1.0
プログラム2.0(計算部分だけがくっついている)も先に差を作ってから判断、調整(
プログラム3.0(計算部分だけくっついている)単純乱暴直接回転分計算(
typedef struct clock
{
int hour;
int minute;
int second;
} CLOCK;
関数のプロトタイプ:
CLOCK CalculateTime(CLOCK t1, CLOCK t2);
関数機能:2つの時間t 1とt 2の差分プログラムの実行結果を計算して返す例1:
Input time one:(hour,minute):4,55↙
Input time two: (hour,minute):1,25↙
3hour,30minute
プログラム実行結果例2:
Input time one:(hour,minute):1,33↙
Input time two: (hour,minute):5,21↙
3hour,48minute
入力プロンプト:「Input time one:(hour,minute):」「Input time two:(hour,minute):」入力フォーマット:「%d,%d」出力フォーマット:「%dhour,%dminute」
プログラム:プログラム1.0
#include
typedef struct clock
{
int hour;
int minute;
int second;
}CLOCK;
CLOCK CalculateTime(CLOCK t1, CLOCK t2);
// :)
CLOCK CalculateTime(CLOCK t1, CLOCK t2)
{
CLOCK t3;
if (t1.hour >= t2.hour)
{
t3.minute = t1.minute - t2.minute;
if (t3.minute>=0)
t3.hour = t1.hour - t2.hour;
else
{
t3.hour = t1.hour - t2.hour - 1;// -1 !
t3.minute = 60 + t3.minute;// 60 ! + !
}
}
else
{
t3.minute = t2.minute - t1.minute;
if (t3.minute>=0)
t3.hour = t2.hour - t1.hour;
else
{
t3.hour = t2.hour - t1.hour - 1;
t3.minute = 60 + t3.minute;
}
}
return t3;
}
int main()
{
CLOCK t1,t2,t3;
printf( "Input time one:(hour,minute):");
scanf("%d,%d",&t1.hour,&t1.minute);
printf("Input time two: (hour,minute):");
scanf("%d,%d",&t2.hour,&t2.minute);
t3 = CalculateTime(t1, t2);
printf("%dhour,%dminute
", t3.hour, t3.minute);
return 0;
}
プログラム2.0(計算部分だけがくっついている)も先に差を作ってから判断、調整(
#include
を加えることを覚えています)CLOCK CalculateTime(CLOCK t1, CLOCK t2)
{
CLOCK t3;
t3.hour = t1.hour - t2.hour;
t3.minute = t1.minute - t2.minute;
if (t3.hour < 0 && t3.minute < 0)
{
t3.minute = fabs(t3.minute);
t3.hour = fabs(t3.hour);
}
else if (t3.hour < 0 || t3.minute < 0)
{
t3.minute = fabs(t3.minute);
t3.hour = fabs(t3.hour);
t3.hour = t3.hour - 1;
t3.minute = 60 - t3.minute;
}
return t3;
}
プログラム3.0(計算部分だけくっついている)単純乱暴直接回転分計算(
#include
を追加することを覚えています)CLOCK CalculateTime(CLOCK t1, CLOCK t2)
{
CLOCK t3;
t3.hour = (int)fabs(t1.hour * 60 + t1.minute - (t2.hour * 60 + t2.minute)) / 60;
t3.minute = (int)fabs(t1.hour * 60 + t1.minute - (t2.hour * 60 + t2.minute)) % 60;
return t3;
}