プロが教える店舗&オフィスのセキュリティ対策術

西暦何年かを入力し、その年がうるう年かそうでないかを
計算するプログラムを作っています。

#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つでてしまいます。
どこがちがうのでしょうか?

A 回答 (4件)

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;

プログラムは慣れと経験ですんで頑張ってください。
    • good
    • 0
この回答へのお礼

ありがとうございました。

プログラミングは難しいです・・・。
自主勉強します。

お礼日時:2002/05/09 12:16

間違っている部分のみです



else {cout<<toshi<<"年は非うるう年です。";}}
else {cout<<toshi<<"年はうるう年です。";}}
else {cout<<toshi<<"年は非うるう年です。";}

に変えて再コンパイルして下さい
    • good
    • 0

軽く見たところ、ロジック以外は変なところはないと思われますが。


コンパイルエラーなのでしょうか?
でしたら、どういった感じのエラーなのかや、エラーコードを乗せていただくとわかりやすいのですが?
ちなみにロジックなのですが、4で割り切れて100で割り切れないときはうるう年なので、elseの2つ目が違う気が??
    • good
    • 0
この回答へのお礼

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

どうでしょうか?

お礼日時:2002/05/09 11:59

エラーの内容を書きましょう。


全角スペースを使っていたなんていう落ちのことだってありますから。
質問とは直接関係はないと思いますけれど、4で割れて100で割れない年は
うるう年ですね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2002/05/09 11:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!