我目前正在使用C ++进行Matric,我想创建一个可以存储non_zero_elements的矩阵。我想要做的是在特定位置插入一个元素,然后使用non_zero_element和zero_element将其打印出矩阵。这是我初始化的矩阵:
int A[4][4] =
{
{ 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 }
};
以下是我的代码
void SM::readElement(int row, int column, int value)
{
m = row;
n = column;
for (int i = 0; i < m; i++) {
cout << "\t\t";
for (int j = 0; j < n; j++) {
if (i == row && j == column)
{
A[i][j] = value;
}
}
}
}
void SM::printMatrix()
{
for (i = 0; i < 4; i++)
{
cout << "\n";
for (j = 0; j < 4; j++)
cout << A[i][j];
}
}
司机:
int main()
{
SM sm;
int choice, column, row, value;
do {
sm.Menu();
cin >> choice;
switch (choice)
{
case 1:
do
{
cout << "Enter row -> ";
cin >> row;
} while (row < 0 || row >= 11);
do
{
cout << "Enter column -> ";
cin >> column;
} while (column < 0 || column >= 11);
do {
cout << "Enter value -> ";
cin >> value;
} while (value <= 0);
sm.readElement(row, column, value);
}
我想读取元素并将其插入特定的行和列,并在插入元素后打印出带有更新矩阵的整个矩阵。我需要有人指出错误。非常感谢你。
Input row = 2
Input column = 2
Input value = 5
实际输出:
int A [4][4] =
{
{ 5 , 5 , 0 , 0 },
{ 5 , 5 , 0 , 0 },
{ 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 }
};
预期产出:
int A [4][4] =
{
{ 0 , 0 , 0 , 0 },
{ 0 , 5 , 0 , 0 },
{ 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 }
};
我发现我的代码不接受row / column = 0,它只以行/列&gt; = 1开头。
答案 0 :(得分:2)
int A[4][4] =
{
{ 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 },
{ 0 , 0 , 0 , 0 }
};
是声明和初始化2d数组的正确语法。你可能应该使用矢量。
答案 1 :(得分:0)
为了将一个元素(比如 int 值)插入矩阵A的位置[row,column],它就足以了
A[row][column] = value;
为了打印新矩阵,只需调用插入后编写的printMatrix()函数