我正在尝试将值输入到大小为10的数组中,但这里的问题是我想如果用户想要输入4x4矩阵,他不需要完成直到数组中的第10个元素,他可以简单地按“f”或任何字符,我试着制作if(input =='f')但它循环直到数组的结尾。怎么解决这个问题?
int main() {
int input,flag=0, size=0;
int matrix[10][10] = {0};
for(int i=0; i<10; i++) {
for(int j=0; j<10;j++) {
cout << "Please enter data for Row " << i << " Column " <<j << " (-200 to terminate): \n";
cin >> input;
if(input == -200) {
flag = 1;
break;
}
else
matrix[i][j] = input;
}
if(flag == 1)
break;
size++;
}
cout << "The determinant of the matrix is: " << determinant(matrix,size) << "\n";
return 0; }
答案 0 :(得分:1)
您必须改变阅读输入的策略。将标记读作字符串。如果字符串的第一个字符是'f',则跳出循环。否则,从字符串中提取数字。
int main()
{
std::string input;
int flag=0;
int size=0;
int matrix[10][10] = {0};
for(int i=0; i<10; i++) {
for(int j=0; j<10;j++) {
std::cout << "Please enter data for Row " << i << " Column " <<j << " (f to terminate): \n";
std::cin >> input;
if ( input[0] == 'f' ){
flag = 1;
break;
}
else
matrix[i][j] = atoi(input.c_str());
}
if(flag == 1)
break;
size++;
}
}
答案 1 :(得分:0)
这是因为退出条件是值-200,当你输入-200然后所有的圆柱停止工作,完成。
答案 2 :(得分:0)
正如R Sahu所说,你必须改变阅读输入的策略。所以你也可以使用stringstream来获得解决方案
#include <iostream>
#include <sstream>
using namespace std;
int main() {
int input,flag=0, size=0;
int matrix[10][10] = {0};
string s;
for(int i=0; i<10; i++) {
for(int j=0; j<10;j++) {
cout << "Please enter data for Row " << i << " Column " <<j << " (-200 to terminate): \n";
cin >> s;
stringstream ss(s);
ss>>input;
if(ss==0)
{
if(s == "f") {//user don't want to enter further input
flag = 1;
break;
}
else
{
//invalid data so you need to reset the value of i and j;
}
}
else
{
cout<<"Input:"<<input<<endl;
matrix[i][j] = input;
}
}
if(flag == 1)
break;
size++;
}