在矩阵C ++编程中将元素插入特定位置

时间:2018-05-20 12:56:51

标签: c++ matrix

我目前正在使用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开头。

2 个答案:

答案 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()函数