在C ++中的二维数组中拾取数字

时间:2018-07-06 16:19:40

标签: c++ arrays

我尝试了解数组如何使用此简单代码工作。 (这是为了做作业)

首先,您应该选择一行(只有2行)

然后您选择一列(共有4个)

我遇到的问题是用户是否选择了未经授权的行卖方列。

想法是先选择一行,然后再选择一列;之后,程序将写出该数组框中的内容。

我认为我做错的是大括号,但我真的不知道如何进行。

我应该补充一点,我的主文件位于另一个文件中,但我想这没关系。

#include "array4.h"

/*That's the content of array4.h
#ifndef ARRAYS_ARRAY4_H
#define ARRAYS_ARRAY4_H

const int rowMAX=1;
const int columnMAX=3;

int array4();

#endif //ARRAYS_ARRAY4_H*/

#include <iostream>

using namespace std;

int array4() {
    int row = 0;
    int column = 0;

    int twodim[2][4] = {{3, 9, 7, 1},
                        {6, 2, 8, 5}};

    cout << "Choose row 0 or 1: ";

    if (row <= rowMAX)
        cin >> row;
    else if (row > rowMAX)
        cout << "Chose a lower row number: " << rowMAX;
    cin >> row;

    cout << "Chose column 0 to 3: ";

    if (column <= columnMAX)
        cin >> column;
    else if (column > columnMAX)
        cout << "Chose a lower column number: " << columnMAX;
    cin >> column;

    cout << twodim[row][column];

    return 0;
}

2 个答案:

答案 0 :(得分:2)

如果要确保用户输入有效输入,则不适合使用if-else。为此,最好使用while循环。

cout << "Choose row 0 or 1: ";
while ( cin >> row ) // Mae sure that input was read successfully.
{
   if ( row < 0 || row > rowMAX )
   {
      cout << row << " is an invalid value for row. Choose 0 or 1: "
   }
   else
   {
      // Got valid input. Break out of the loop.
      break;
   }
}

类似地更新代码以接收来自用户的col

答案 1 :(得分:2)

最好与while循环一起使用,以便连续获取行和列,直到获得良好的行和列!

int array4() {
    int row = 0;
    int column = 0;

    int twodim[2][4] = {{3, 9, 7, 1},
                        {6, 2, 8, 5}};

    //get row
    cout << "Choose row 0 or 1: ";
    cin >> row;
    while (row < 0 || row > rowMAX){
         cout << "invalid row!" << endl;
         cin >> row;
    }

    //get column
    cout << "Choose col 0 to 3: ";
    cin >> column;
    while (column < 0 || column > columnMAX){
         cout << "invalid column!" << endl;
         cin >> column;
    }

    cout << twodim[row][column];

    return 0;
}