Печать функции 2D-печати в C - PullRequest
1 голос
/ 14 июня 2019

Я чувствую, что я очень близок к тому, чтобы получить это правильно, но я упускаю жизненно важный момент вызова функции печати в моем основном методе. Я немного потренировался, так что простой толчок в правильном направлении помог бы. Предполагается, что мой код должен распечатывать двумерный массив основным способом, а затем основным способом столбца.

// ArrayPointer.c

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

// a: array pointer, m: # of rows, n: # of columns  
void printMatrixRowMajor(int *a, int m, int n){

    printf("Matrix row major fashion:\n");

        int x[3][4];
        a = &(x[0][0]);

        for (m=0;m<3;m++){
            for (n=0;n<4;n++){
                printf("%d ", *(a + (m*4)+n));  
            }
            printf("\n");
        }
}
// a: array pointer, m: # of rows, n: # of columns
void printMatrixColMajor(int *a, int m, int n){ 
    printf("\nMatrix column major fashion:\n");

        int x[3][4];
        a = &(x[0][0]);

        for (n=0;n<4;n++){
            for (m=0;m<3;m++){
                printf("%d ", *(a + x[m][n]));
            }
            printf("\n");
        }
}
main()
{
    int row, col;
    int x[3][4], *xptr;

    xptr = &(x[0][0]);
    printf("%d", printMatrixRowMajor);


}

1 Ответ

3 голосов
/ 14 июня 2019

Ваш слегка измененный код может выглядеть так:

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

// a: array pointer, m: # of rows, n: # of columns
void printMatrixRowMajor(int *a, int m, int n) {

    printf("Matrix row major fashion:\n");

    for (int y = 0; y < m; y++) {
        for (int x = 0; x < n; x++) {
            printf("%d ", *(a + (y * n) + x));
        }
        printf("\n");
    }
}

int main() {
    int x[3][4] = {{1, 2,  3,  4},
                   {5, 6,  7,  8},
                   {9, 10, 11, 12}};
    printMatrixRowMajor(x, 3, 4);
    return 0;
}

Изменения

  • в основном определены некоторые матричные данные
  • вызывается printMatrixRowMajor (не printf указателя функции)
  • две индексные переменные используются для обхода матричных элементов в printMatrixRowMajor
  • Размеры матрицы используются для посещения элементов матрицы
  • принята основная функция подписи
  • возвращение 0 добавлено на главную

Вывод на консоль

Если вы запустите программу, она выдаст на консоли следующий вывод:

Matrix row major fashion:
1 2 3 4 
5 6 7 8 
9 10 11 12 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...