質問概要
入力文字または値が所定のものでなかった場合に入力させなおすにはどうすればいいのでしょうか?
実現したいこと
全要素が実数のN*N正方行列に手動で値を入力させるが、
実数以外の値を入力されたときに入力をやり直しさせたい。
該当のソースコード
ソースコードを抜粋して書きます。
コメントアウトで囲った個所に所定の文を書ければいいのですが。
C++
1 2 cout << "x?" << endl; 3 for(i=0;i<N;i++){ 4 for(j=0;j<N;j++){ 5 cout << "x["<< i <<"]["<< j <<"]?----------->"; 6 cin >> x[i][j]; 7 if(/*ここに実数以外が入力されたことを判定する条件を書きたい*/){ 8 cout << "Input only real number!" << endl; 9 /*ここに入力し直しをさせるための構文を書きたい*/ 10 } 11 12 } 13 } 14 cout << endl;
以上よろしくお願いいたします。
20221223追記
皆様のおかげで入力しなおしの条件や動作について少し進展しました。あともう少しのところです。doの{}内をどうにかする必要がありそうです。どうでしょうか…?
C++(改善後)
1cout << "x?" << endl; 2 for(i=0;i<N;i++){ 3 for(j=0;j<N;j++){ 4 do{ 5 cout << "x["<< i <<"]["<< j <<"]?----------->"; 6 cin >> x[i][j]; 7 if(cin.fail()!=0) 8 cout << "Input only number!" << endl; 9 else break; 10 }while(1); 11 12 } 13 } 14 cout << endl;
以下がエラーです。
PS C:\Users\motch\java> g++ Loop1_C++_20221222.cpp -o Loop1_C++_20221222 ; .\Loop1_C++_20221222 Input some real numbers How many rows and columns does the matrix have?3 x? x[0][0]?----------->1 x[0][1]?----------->2 x[0][2]?----------->3 x[1][0]?----------->4 x[1][1]?----------->5 x[1][2]?----------->6 x[2][0]?----------->l Input only number! x[2][0]?----------->Input only number! x[2][0]?----------->Input only number! x[2][0]?----------->Input only number! x[2][0]?----------->Input only number! x[2][0]?----------->Input only number! x[2][0]?----------->Input only number! x[2][0]?----------->Input only number!
回答3件
あなたの回答
tips
プレビュー