C ++使用char输入终止循环到int

时间:2014-03-26 05:09:36

标签: c++ loops

我正在尝试将值输入到大小为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; }

3 个答案:

答案 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++;
}