• ベストアンサー

うるう年かどうかを計算するプログラミング

西暦何年かを入力し、その年がうるう年かそうでないかを 計算するプログラムを作っています。 #include <iostream> using namespace std; int main() { int toshi; cout <<"西暦を入力してください"; cin>>toshi; if (toshi%4==0) {if (toshi%100==0) {if (toshi%400==0) {cout<<toshi<<"年はうるう年です。";} else {cout<<toshi<<"年は非うるう年です。";} else {cout<<toshi<<"年は非うるう年です。";} else {cout<<toshi<<"年は非うるう年です。";}}} return EXIT_SUCCESS; } これを入力したのですが エラーが2つでてしまいます。 どこがちがうのでしょうか?

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

  • ベストアンサー
  • Shindo_
  • ベストアンサー率100% (1/1)
回答No.3

else文の対応の問題ですね。 上記のプログラムだと、全部のelseが三番目のif文に対応するelseになっちゃってます。 正解のソースはこちら int toshi; cout <<"西暦を入力してください"; cin>>toshi; if (toshi%4==0){ if (toshi%100==0){ if (toshi%400==0){ cout<<toshi<<"年はうるう年です。"; }else{ cout<<toshi<<"年は非うるう年です。"; } }else{ cout<<toshi<<"年は非うるう年です。"; } }else{ cout<<toshi<<"年は非うるう年です。"; } cin >> toshi; return EXIT_SUCCESS; 上記のソースをよく見てくださいね。「{」の数が違うと思います。 ただ、三個もif文が重なるのは間違いの元なので、下のようにしたほうがすっきりすると思いますよ。 int toshi; cout <<"西暦を入力してください"; cin>>toshi; if (((toshi%4==0) && (toshi%100!=0)) || ((toshi%4==0) && (toshi%400==0))){ cout<<toshi<<"年はうるう年です。"; }else{ cout<<toshi<<"年は非うるう年です。"; } cin >> toshi; return EXIT_SUCCESS; プログラムは慣れと経験ですんで頑張ってください。

chi-nao_chan
質問者

お礼

ありがとうございました。 プログラミングは難しいです・・・。 自主勉強します。

その他の回答 (3)

  • yotta
  • ベストアンサー率32% (26/79)
回答No.4

間違っている部分のみです else {cout<<toshi<<"年は非うるう年です。";}} else {cout<<toshi<<"年はうるう年です。";}} else {cout<<toshi<<"年は非うるう年です。";} に変えて再コンパイルして下さい

  • semujyu
  • ベストアンサー率12% (4/32)
回答No.2

軽く見たところ、ロジック以外は変なところはないと思われますが。 コンパイルエラーなのでしょうか? でしたら、どういった感じのエラーなのかや、エラーコードを乗せていただくとわかりやすいのですが? ちなみにロジックなのですが、4で割り切れて100で割り切れないときはうるう年なので、elseの2つ目が違う気が??

chi-nao_chan
質問者

お礼

coo(25) : error C2181: else 文が if と一致しません。 cpp(27) : error C2181: else 文が if と一致しません。 とでています。 どうでしょうか?

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.1

エラーの内容を書きましょう。 全角スペースを使っていたなんていう落ちのことだってありますから。 質問とは直接関係はないと思いますけれど、4で割れて100で割れない年は うるう年ですね。

chi-nao_chan
質問者

お礼

エラー内容。 else 文が if と一致しません。 が2つでています。 全角スペースは使っていませんでした・・・。 4で割れて、100で割れないようにすればいいのでしょうか?

関連するQ&A

専門家に質問してみよう