Warm tip: This article is reproduced from serverfault.com, please click

其他-无法在函数C ++中打印2D数组

(其他 - Cant print an 2d array in function c++)

发布于 2020-11-29 11:10:25

我在打印isSymmetric函数时遇到问题,我不知道如何正确打印它。而且我无法在Google中找到解决方案。

#include <iostream>
#include <iomanip>

using namespace std;

const int MAX = 100;

void transpose(int mat[MAX][MAX], int tr[][MAX], int N)
{
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            tr[i][j] = mat[j][i];
}

bool isSymmetric(int mat[MAX][MAX], int N)
{
    int tr[MAX][MAX];
    transpose(mat, tr, N);
    for (int i = 0; i < N; i++)
        for (int j = 0; j < N; j++)
            if (mat[i][j] != tr[i][j])
                return false;
    return true;
}

void main() {
    int matrix_size;
    cout << "Enter rows and columns for quaratic matrix: ";
    cin >> matrix_size;
    //int* a = (int*)malloc(row * col * sizeof(int));
    const int col = 99, row = 99;
    int a[col][row];
    srand((unsigned)time(NULL));
    for (int i = 0; i < matrix_size; i++)
        for (int j = 0; j < matrix_size; j++)
            a[i][j] = 0 + rand() % (20 - 0 + 1);
    cout << endl;
    for (int i = 0; i < matrix_size; i++) {
        for (int j = 0; j < matrix_size; j++)
            cout << setw(4) << a[i][j];
        cout << endl;
    }
    //if (isSymmetric(a, matrix_size)) has a problem
    if (isSymmetric(a, matrix_size))
        cout << "Yes";
    else
        cout << "No";
}

我收到以下错误,我不知道它的说法是什么:类型为“ int()[99U]”的错误(活动)E0167参数与类型为“ int()[100]”的参数不兼容

Questioner
Roman Roman
Viewed
0
Tomer 2020-11-29 19:18:54

你的功能需要int mat[MAX][MAX]他们的争论中,在那里MAX是100,你通过他们int a[col][row]在那里rowcol是99。这就造成这个问题,因为有100个元素的数组是不一样的99个元素数组...