Вызов функции с двумерным массивом - C (СИ)
Формулировка задачи:
Всем доброго времени суток!
Подскажите, в чём проблема?
Лог ошибок такой:
если задам массив в transponse в таком виде (**matrix), то программа запускается и сразу закрывается.
//transponse (*) #include <locale.h> #include <stdio.h> int transponse(int matrix[][], int N, int M){ printf("Исходная матрица: (%dX%d)\n",N,M); for (int i=0;i<N;i++){ for (int j=0;j<M;j++) printf("%3d", matrix[i][j]); putchar('\n'); } printf("Транспонированная матрица: (%dX%d)\n",M,N); for (int i=0;i<M;i++){ for (int j=0;j<N;j++) printf("%3d", matrix[j][i]); putchar('\n'); } } int main(){ setlocale(LC_ALL,"Rus"); int N=4; int M=5; int matrix[4][5]= { {1,2,3,4,5}, {5,6,7,0,6}, {9,10,11,10,0}, {0,0,0,2,1} }; transponse(matrix,N,M); }
Решение задачи: «Вызов функции с двумерным массивом»
textual
Листинг программы
void tr(int *a, int n, int m) { int i,j; for(i=0;i<n;i++) { for(j = 0; j < m; j++) printf("%d ", a[i*m + j]); printf("\n"); } } int main() { int a[2][3] = {1,2,3,4,5,6}; tr(&a[0][0],2,3); return 0; }
Объяснение кода листинга программы
В данном коде представлена функция tr, которая принимает три аргумента:
- a - указатель на двумерный массив.
- n - количество строк в массиве.
- m - количество столбцов в массиве.
Внутри функции создаются две переменные i и j, которые будут использоваться в циклах.
Затем, с помощью внешнего цикла for, который выполняется n раз, происходит итерация по строкам массива.
Внутри внешнего цикла, с помощью внутреннего цикла for, который выполняется m раз, происходит итерация по столбцам массива.
На каждой итерации внутреннего цикла, с помощью оператора printf, выводится значение элемента массива, с добавлением пробела после запятой.
После завершения внутреннего цикла, с помощью оператора printf, выводится символ новой строки
\n
, который позволяет перейти на следующую строку вывода. После завершения внешнего цикла, функция tr завершается. В функции main, создается двумерный массив a размером 2x3, инициализированный значениями 1,2,3,4,5,6. Затем, с помощью функции tr, происходит обход массива и вывод его значений на экран. Функция main завершается, и выполнение программы прекращается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д