-2

レンタル料金を計算するプログラムを作成しようとしています。ほとんどのプログラムを作成しましたが、ユーザーがレンタルした日数とレンタル開始日を入力して返却日を決定する関数を作成する必要があります。唯一の要件は、関数が (月の日数を決定する) 別の関数を呼び出すループであることです。私が遭遇し続ける問題は、他の関数 (各月の日を決定すること) が月によって変化しないことです。したがって、2013 年 1 月 1 日を入力すると、その月の正しい日数が表示され、カウンターが 2 月に変わると、31 日が続きます。要件を満たす式を知っている人はいますか?

4

3 に答える 3

3

各月の日数をハードコーディングした配列から始めます。2 月の閏日を補うと、うまくいくはずです。

int daysInMonth(int month, int year)
{
    // Check for leap year
    bool isLeapYear;
    if (year % 400 == 0)
        isLeapYear = true;
    else if (year % 4 == 0 && year % 100 != 0)
        isLeapYear = true;
    else
        isLeapYear = false;

    int numDaysInMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}
    if (isLeapYear)
        numDaysInMonth[1]++;
    return numDaysInMonth[month - 1];
}
于 2013-08-20T18:12:16.080 に答える
2

Boost.Date_Time の使用を検討してみませんか?

于 2013-08-20T17:04:18.707 に答える