C++ で通話課金プログラムを作成しようとしています。この小さなプログラムの機能の 1 つは、入力されたタイム ストレッチに応じて、割引時間内に話された割引分と営業時間内の通常料金の分を更新する機能です。
ユーザーは最初に、この 22:00 のような文字列として時刻を入力します
次に、文字列を取得して整数に変換する関数があります。たとえば、上記の 22:00 は 2200 に変わります
次に、int、上記の int を取り、それを 10 進数に変換する別のヘルプ関数があります。
double turnTimeToDecimal(int timeRaw){
double decimalTime;
decimalTime = timeRaw * 0.01;
return decimalTime;
}
この機能に対処するために、営業時間は割引がなく、午前 8 時から午前 18 時 30 分までです。0 から 1417 分 (24 時間) までの for ループ内の 2 つのカウンターを更新します。
double myStartDecimal = 0.0;
double myStopDecimal = 0.0;
myStartDecimal = turnTimeToDecimal(myStartRaw);
myStopDecimal = turnTimeToDecimal(myStopRaw);
//hours and minutes start
int hourStart = (int)floor(myStartDecimal);
int minuteStart = (int)round(100*(myStartDecimal - hourStart));
//hours and minutes stop
int hourStop = (int)floor(myStopDecimal);
int minuteStop = (int) round(100*(myStopDecimal - hourStop));
int totalMinutesPremium = 0;
int totalMinutesDiscount = 0;
int i = 0;
int k = 0;
for(k = (hourStart* 60) + minuteStart; k < (hourStop * 60) + minuteStop + round(((double)minuteStop/100)); k++){
//will update the corresponding counter depending
//on the time stretch, business hours 8.00 - 18.30.
if(hourStart >= 8 && hourStop < 18.5){
totalMinutesPremium++;
}else{
totalMinutesDiscount++;
}
}
//will give total minutes
cout << " k is: " << k << endl;
//will give the total number of minutes during the business hours and
//the total number of minutes during the discount hours(non-bussiness hours)
cout << "Total minutes premium " << round(totalMinutesPremium) <<
" Total Minutes discount " << round(totalMinutesDiscount) << endl;
ただし、プログラムは、入力されたタイム ストレッチが営業時間内であるかどうかを検出します。ただし、1 つのケースを除きます。たとえば、時間が 7:30 ~ 8:30 (営業時間は 7:59 ~ 18:30) の場合、30 分と予想される営業時間内の分の組み合わせは返されません。割引期間は 07:59 に終了し、18:31 に再開されるため、割引時間も 30 分になると予想されます。
うまくいけば、私は自分自身を明確にしました。