- ベストアンサー
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; }
- みんなの回答 (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; }
その他の回答 (1)
- mneko
- ベストアンサー率33% (46/139)
何もしないのであれば、「;」セミコロンのみでよいと思います。
お礼
セミコロンだけでいいんですね。 if文をセミコロンで閉じると不思議な感じですね (いつはそう閉じないので)。 ありがとうございました。
お礼
あー、continue! 遠い昔に習った気がします! まったく使わないので忘れてしまったようです。 おっしゃるとおり、教科書には載っていました。 …breakはちゃんと覚えていたんですけどね。(^^ゞ ありがとうございました!