• ベストアンサー

if文でスキップしたい場合は?

従業員番号を入力して正しいフォーマットでなければ エラーを表示するようなプログラムを作ってます。 そのフォーマットとは100-Aのように '-'を挿んで三桁の数字とA~Mまでのローマ字一文字で成り立っています。 ですからZ80-Aや100-Zなどと入力するとエラーが表示されるようにしたいんです (ハイフンは正しい位置で打つことになっています)。 最初と二番目の条件にあてはまる場合は正しいフォーマットなので何もせずに次のループへ行き、 あてはまらない場合は三番目のelse ifでエラーを表示するようにしています。 …でも本当に「何もせずに」では怒られるので申し訳程度にcout;を入れています。 でもこれはどう見ても見栄えの良いプログラムではないですよね? でもif(i==3 && empNum[i] == '-')の"=="を"!="にすると引っかからないんですよね…。 if文で何もしない場合の対処法、または正しい論理式の組み方が分かる方、どうか手直しを助けてください。 お願いします。m(__)m #include <iostream> #include <iomanip> using namespace std; void main() //本当はclassの中なんですけど仮でmain()に入れました { char empNum[6]; cout << " Employee Number: "; cin >> empNum; for(int i=0; i<5; i++) { if(i==3 && empNum[i] == '-') cout; else if(i==4 && (empNum[i] >= 'A' && empNum[i] <= 'M')) cout; else if(empNum[i] < '0' || empNum[i] > '9') cout << "The Employee Number has an Invalid Character: " << empNum[i] << endl; } return; }

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

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

continue文を使うといいと思います。 ループ内で、それ以降の処理をキャンセルする働きがあります。 (Cの教科書には載ってると思います) この場合elseもいらなくなります。 for(int i=0; i<5; i++) {   if(i==3 && empNum[i] == '-')continue;   if(i==4 && (empNum[i] >= 'A' && empNum[i] <= 'M'))continue;   if(empNum[i] < '0' || empNum[i] > '9')     cout << "The Employee Number has an Invalid Character: " << empNum[i] << endl; }

ginkgo
質問者

お礼

あー、continue! 遠い昔に習った気がします! まったく使わないので忘れてしまったようです。 おっしゃるとおり、教科書には載っていました。 …breakはちゃんと覚えていたんですけどね。(^^ゞ ありがとうございました!

その他の回答 (1)

  • mneko
  • ベストアンサー率33% (46/139)
回答No.1

何もしないのであれば、「;」セミコロンのみでよいと思います。

ginkgo
質問者

お礼

セミコロンだけでいいんですね。 if文をセミコロンで閉じると不思議な感じですね (いつはそう閉じないので)。 ありがとうございました。

関連するQ&A