• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++で経過日の計算)

C++で経過日の計算

このQ&Aのポイント
  • C++を使用して、指定した日付間の日数を計算するプログラムが正しい値を出力しない問題についての質問です。
  • プログラムの中のint month_day()関数の処理に問題があり、具体的な箇所が特定できず困っています。
  • 質問者は、1月1日から5月1日までの日数を計算するプログラムを作成していますが、正しい値が出力されません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

int md[12] = {31,28,31,30,31,30,31,31,30,31,30,31}; //月毎の日数 前月までの日数を累計していくので、 int md[12] = {0,31,28,31,30,31,30,31,31,30,31,30}; //12月の分を使うことはない for(i = 1; i <= date.month - 1; i++){ days = days + md[i]; i = i + 1; } forの中のi++かループ中のi=i+1のどちらか片方だけでよい

CHAMPloock
質問者

お礼

なるほど わかりやすいです(^u^) ありがとうございました。

その他の回答 (8)

回答No.9

No.6 です。 「直接の回答では無い」とか書いておいたし、「配列じゃ無いからなんか変なもの」と思って、No.6 は無視したんだろうな。 > でも値を返して、ってエラーが出てくるので > どうにかしなきゃと思った結果がこれでしたorz この部分は、しっかり書いてあるのにね。

CHAMPloock
質問者

お礼

お礼が遅れて申し訳ありません。 ただすぐに確認できる状態でないので、詳しくわかってからお礼をしようと思っていました。 納得してからでないと、生返事みたいな感じになってしまうのでお礼していませんでした。 回答ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.8

Java も C++ も「配列の添字」については C の仕様を受け継いでるから同じこと....

CHAMPloock
質問者

お礼

…一から勉強し直しますね。^_^; ありがとうございました。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.7

仮に日数の計算が正しいとしても、month_day関数で >return 0; していることですべてを台無しにしていますね。

CHAMPloock
質問者

お礼

やっぱりそうですよね でも値を返して、ってエラーが出てくるので どうにかしなきゃと思った結果がこれでしたorz 値を返すってのがよくわからないんですよね 回答ありがとうございました。

回答No.6

直接の回答ではないのですが、 こういうのもいいかなと思うのです。 ※ただし、未確認。 int month_day(strcut Date date) { int days = 0; for(int i = 1; i < date.month; i++) { switch(i) { case 2: days += 28; break; case 4: case 6: case 9: case 11: days += 30; break; defalut : days += 31; break; } } days += date.day; return days; } int md[12] = {31,28,31,30,31,30,30,31,30,31,30,31}; //月毎の日数 で、間違っているのが一目でわかりますか?(私がわざと間違えて書きました) それより、「西むく士」を知っていたら、こっちの方が確認が楽かなと。

  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.4

>正しい値が出ません。 常に「0 Days」と表示される…とか。 >int month_day(struct Date date) >{ >     : >return 0; >} なので、month_day()内でどんな処理をしようとも >days = month_day(date); でdaysに入るのは常に0…となっていますが。 配列に関しては既に指摘されてますね。

CHAMPloock
質問者

お礼

まさにその通りで、0daysって出ちゃうんですよ!! 自分でもダメだろこれって思いつつも 値を返すってのがよくわかんなくて^_^; 回答ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.3

配列を使えてませんね. なぜ i は 1 からなの? C における配列の添え字はいくつからか知ってる? NULL って何>#2.

CHAMPloock
質問者

お礼

C++初めてで、多分javaならわかるんですけど、 検索してみます。 回答ありがとうございました。

  • oihsigus
  • ベストアンサー率0% (0/1)
回答No.2

配列の個数は12ですが最後にNULLがあるので、md[12]ではなく12にNULLをプラスしたmd[13]です。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

配列の使い方は OK?

CHAMPloock
質問者

お礼

回答ありがとうございます 配列使えてないですかf^_^; int md~ の行だけじゃだめですか??