• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C++で、日付をプログラミング)

C++で日付をプログラミング | エラー処理とクラスの修正方法

このQ&Aのポイント
  • C++で日付をプログラミングする際、エラー処理とクラスの修正が必要です。
  • MyDateクラスを修正し、月と日の初期値を1とし、print()メソッドを追加します。
  • changeDay()メソッドでは月に応じた適切なエラー処理を施し、changeMonth()メソッドではdayの値を修正します。

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

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

仕様の2と3を見るに… >void MyDate::print() >{ >if(month = 2 && day > 28){ >printf("DATE = %d/%d\n",1,31); >}else if(month = 4,6,9,11 && day > 30){ > : MyDate::print()でごにょごにょするのではなく、 changeDay()とchangeMonth()で処理しろ…… ということかと思われますが。 あと、上記のif文の判定式は正しくないです。 if(month = 2 && day > 28) は… monthに2を「代入」し、dayが28より大きい場合に真となります。 「monthが2、かつdayが28より大きい」という判定ではないです。 if(month == 2 && day > 28) と記述していませんから。 if(month = 4,6,9,11 && day > 30) は… monthに4を「代入」し、dayが30より大きい場合に真となります。 「monthが4または6または9または11で、dayが30より大きい」を期待されているようでしょうが違います。 もう少し、基礎からやり直した方がいいと思いますが。

CHAMPloock
質問者

お礼

わかりやすい回答ありがとうございました。

その他の回答 (2)

回答No.3

質問になっていません。 > 途中まで考えたのですが、 ではその「途中まで」を示してください > 煮詰まってしまってうまくいきません。 どこで/なにに煮詰まったのですか? なにが/どううまくいきませんか?

CHAMPloock
質問者

お礼

確かにこれじゃ丸投げみたいなものですよね。 指摘ありがとうございます。 今後気を付けます。

回答No.1

コンストラクタの実体は? これがないと初期化ができないはずですが。 また、3.と4.の条件はchangeDay関数とchangeMonth関数内の処理を説明しているはずですが、なぜprint関数で処理してるの? しかもやってる処理自体も提示された条件とは違ってるし。 さらに、 > month = 4,6,9,11 これはエラーにはならないでしょうが、あなたが考えている「monthが4,6,9,11のどれかと一致したら」という条件にはなりません。C++のコンマ演算子について調べてみてください。

CHAMPloock
質問者

お礼

わかりました 調べてみます!! 細かく教えてくれてありがとうございました

関連するQ&A