繁体   English   中英

如何编写 function 以交换二维数组中的行(c++)

[英]How to write a function to swap rows in a 2D array (c++)

我正在解决一个问题,以编写一个函数来交换 4x6 2D 矩阵中的行。 我目前仅适用于第一列中的行的 function。 我真的不确定我在这里做错了什么。

#include <stdio.h>
#include <math.h>


void swapRows(int matrix[][6], int row1, int row2);

int main() {
    //declare variables
    int matrix[4][6], swapped, i = 0, j = 0, swap1, swap2;

    //insert random values
    for (i = 0; i < 4; i++) {
        for (j = 0; j < 6; j++) {
            matrix[i][j] = rand() % 100;
        }
    }

    //prompt which rows to swap
    printf("Swap Row: \n");
    scanf_s("%d", &swap1);
    printf("With Row: \n");
    scanf_s("%d", &swap2);

    //swap rows
    //display swapped matrix
    printf("\n");
    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 6; j++) {
            swapRows(matrix, swap1, swap2);
            printf("%d\t", matrix[i][j]);
        }
        printf("\n");
    }
}

//swap function
void swapRows(int matrix[][6], int row1, int row2) {

    for (int i = 0; i < 4; i++) {
        for (int j = 0; j < 6; j++) {
            int tempRow = matrix[row1][j];
            matrix[row1][j] = matrix[row2][j];
            matrix[row2][j] = tempRow;
        }
    }
}

我不确定您为什么要在打印循环中交换行。 但是您可以将 function 简单地编写为:

void swapRows(int matrix[][6], int row1, int row2) 
{
    std::swap(matrix[row1], matrix[row2]);
}

如果您不想使用std::swap ,则可以手动交换行的元素,如下所示:

void swapRows(int matrix[][6], int row1, int row2) 
{
    for (int j = 0; j < 6; j++) 
    {
        int temp = matrix[row1][j];
        matrix[row1][j] = matrix[row2][j];
        matrix[row2][j] = temp;
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM