質問概要
数字以外を入力されたときにエラーとし、入力しなおしをするようdo whileを使用しているのですが、一度数字以外の文字を入力すると無限ループに陥ってしまいます。
実現したいこと
N*Nの正方行列の各要素を手入力してもらい、数値以外の文字を入力されたときにその要素の再入力をする仕様にしたいと思っています。
Terminal画面の表示
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]?----------->o Input only number! x[1][1]?----------->Input only number! x[1][1]?----------->Input only number! x[1][1]?----------->Input only number! x[1][1]?----------->Input only number! x[1][1]?----------->Input only number!
該当のソースコード
C++
1 cout << "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 { 9 cout << "Input only number!" << endl; 10 x[i][j]=0; 11 } 12 else break; 13 }while(1); 14 15 } 16 } 17 cout << endl;
試したこと
Input only number!と表示した後、間違い入力をした要素(上記ではx[1][1])へ0を代入しなおしたのですが意味がないようです。手がかりを教えていただきたいです。
以上よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー