несовместимый тип аргумента при использовании (matrix * mtx) - PullRequest
0 голосов
/ 10 апреля 2020

IDK знает, что не так, но я получаю сообщение об ошибке: main.c | 45 | error: несовместимый тип для аргумента 1 «symbri c» (в printf) Если вы можете это исправить, скопируйте исправленный код, спасибо вы!! я думаю, что ошибки в int main ()

#include <stdio.h>
#include <stdlib.h>
typedef struct
{
    int n;
    int m;
    int** mat;
} matrix;

int symmetric(matrix* mtx)
{
    int i, j;

    if (mtx->n==mtx->m)
    {
        for ( i = 0; i <mtx->n; i++)
        {
            for ( j = 0; j < mtx->m; j++)
            {
                if( mtx->mat[i][j]!=mtx->mat[j][i] )
                {
                    return 0;
                }
            }
        }
        return 1;
    }
    return 0;
}


int main()
{
   matrix m = {
      .m = 3,
      .n = 3,
      .mat = {
        {1, 4, 4},
        {4, 1, 4},
        {4, 4, 10}
      }
    };

    printf("This matrix %s symmetric\n", symmetric(m)? "is" : "is not");
    return 0;
}

1 Ответ

1 голос
/ 10 апреля 2020

Вы создали матрицу, например:

matrix m = {

Но ваша функция принимает matrix *:

int symmetric(matrix* mtx)

Так что вам нужно передать указатель на матрицу, а не сама фактическая матрица:

printf("This matrix %s symmetric\n", symmetric(&m)? "is" : "is not");

Обратите внимание на &m, где & принимает адрес объекта, к которому она применяется, то есть m.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...