我正在尝试将有序数字对转换为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
答案 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之间。