0

宿題のために、2つの日付の差を計算しようとしています。唯一の問題は、ループの場合、for whileの外では何も使用できないことです。これは、私を夢中にさせています。sudocodeを書いてみましたが、簡単そうに見えますが、座ってコーディングを始めると、月が来ると迷子になります(うるう年を除く)。

開始日が2015年7月3日から2016年3月5日までであるとします。

私はもともと、今月が終わるまで日数を追加し、日数からすべてを計算するつもりでした。しかし、毎月異なる日を含め始めると、ちょっと迷ってしまいます。

4

2 に答える 2

0

ステップ1:日付を「うるう年などを考慮した「epocからの日数」に変換する関数を記述します。epocはおそらく「1/1/1970」である可能性があります。ルックアップテーブルを使用するのは簡単です。1つはうるう年フラグを含む「前の年の日」用で、もう1つはうるう年以外の年の「前月の日」用です(前のテーブルのうるう年フラグの場合)が設定され、月が2月以降の場合は、日を追加します)。次に、「前の年の日数」、「前の月の日数」、およびその月の日を追加して、「エポックからの日数」を取得します。

ステップ2:両方の日付を「epocからの日数」の整数に変換して減算します。

注:講師は、ルックアップテーブルを使用するのではなく、計算を使用することを期待する場合があります。この場合、ルックアップテーブルを使用して機能させてから、ルックアップテーブルを1つずつ置き換えます。

于 2011-04-23T07:43:01.407 に答える
0

その月にどこまで行けるかを考えるアイデアは、

for(day=1;day<=days_in_month(month);day++){
    counter++;
}

次に、いくつかの if ステートメントを使用して返される days_in_month 関数を用意します。少しグーグルを持っているなら、これを効率的に解決するためのいくつかの良いステートメントを見たのを覚えています-うるう年を含める必要がある場合は、明らかに年を days_in_month 関数に渡す必要があります。明らかに、上記のループを他のループにネストする必要があります。

これが役に立てば幸いです。幸運を祈ります。

于 2011-04-23T06:56:04.573 に答える