- ベストアンサー
C++で日付をプログラミング | エラー処理とクラスの修正方法
- C++で日付をプログラミングする際、エラー処理とクラスの修正が必要です。
- MyDateクラスを修正し、月と日の初期値を1とし、print()メソッドを追加します。
- changeDay()メソッドでは月に応じた適切なエラー処理を施し、changeMonth()メソッドではdayの値を修正します。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
仕様の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より大きい」を期待されているようでしょうが違います。 もう少し、基礎からやり直した方がいいと思いますが。
その他の回答 (2)
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
質問になっていません。 > 途中まで考えたのですが、 ではその「途中まで」を示してください > 煮詰まってしまってうまくいきません。 どこで/なにに煮詰まったのですか? なにが/どううまくいきませんか?
お礼
確かにこれじゃ丸投げみたいなものですよね。 指摘ありがとうございます。 今後気を付けます。
- m-take0220
- ベストアンサー率60% (477/782)
コンストラクタの実体は? これがないと初期化ができないはずですが。 また、3.と4.の条件はchangeDay関数とchangeMonth関数内の処理を説明しているはずですが、なぜprint関数で処理してるの? しかもやってる処理自体も提示された条件とは違ってるし。 さらに、 > month = 4,6,9,11 これはエラーにはならないでしょうが、あなたが考えている「monthが4,6,9,11のどれかと一致したら」という条件にはなりません。C++のコンマ演算子について調べてみてください。
お礼
わかりました 調べてみます!! 細かく教えてくれてありがとうございました
お礼
わかりやすい回答ありがとうございました。