如何在使用2D数组时将有序对转换为3x3矩阵C ++

时间:2019-03-28 02:45:21

标签: c++

我正在尝试将有序数字对转换为3x3矩阵,并且在编写转换时遇到麻烦。

我尝试了嵌套for循环的多种变体来解决此问题,但没有得到理想的结果。

这是我目前的尝试

  for(i = 0; i < 6; i++) {
    row = matrixAin[i][0];
    col = matrixAin[i][1];

    for(j = 1; j <= row; j++) {
      for(int k = 1; k <= col; k++) {
        matrixA[j][k] = 1;
      }
    }
  }

这是我拥有的所有代码:

  #include <iostream>
  using namespace std;

  int main() {

    int matrixAin[6][2]; // ordered pair of Matrix A
    int matrixA[3][3];   // 3x3 matrix of Matrix A
    int i, j, row, col;  // for the for loops

    // Sets Matrix A & B values to 0
    for (i = 0; i < 3; i++) {
        for(j = 0; j < 3; j++) {
            matrixA[i][j] = 0;
            matrixB[i][j] = 0;
        }
    }

    // input of Matrix A
    cout << "Please input the ordered pairs for matrix A: ";
    for (i = 0; i < 6; i++) {
        cin >> matrixAin[i][0] >> matrixAin[i][1]; // row , col
    }

    // sets row / col to 1 for Matrix 3x3
    // this is the code with the issue
    for(i = 0; i < 6; i++) {
        row = matrixAin[i][0];
        col = matrixAin[i][1];

        for(j = 1; j <= row; j++) {
            for(int k = 1; k <= col; k++) {
                matrixA[j-1][k] = 1;
            }
        }
    }

    // Displays matrix A
    cout << "A= ";
    for(int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            cout << matrixA[i][j] << ' ';
        }
        cout << endl;
    }

}

这是该矩阵的输入应为

请输入矩阵A的有序对:

1 2

1 3

2 1

2 2

3 2

3 3

这是预期的结果:

A =

0 1 1

1 1 0

0 1 1

2 个答案:

答案 0 :(得分:1)

您的当前代码接收每一对,然后为大小为row x col的每个子矩形,将矩形的面积设置为1。这确实很接近。您只需为每个有序对设置一次:

for(i = 0; i < 6; i++) {
    row = matrixAin[i][0];
    col = matrixAin[i][1];
    matrixA[row - 1][col - 1] = 1;
}

答案 1 :(得分:1)

将内部for循环替换为matrixA[row - 1][col - 1] = 1;。不要忘记检查col和row是否在1到3之间。