Разбить код на функции (транспонирование матрицы) - C (СИ)
Формулировка задачи:
Помогите сделать транспонирование матрицы через функции, оно всё сделано в одной функции,, нужно сделать например так: в одной функции выводится исходная матрица, во второй функции идет транспонирование, а в третьей вывод полученной матрицы, и эти все функции вставить в главную функцию MAIN вот код:
#include <stdio.h> int main(void) { int A[3][3]={{1,2,4},{0,9,5},{8,6,3}}; int B[3][3]; int i,j; for(i=0;i<3;i++)//Печатаем исходный массив { printf("\n"); for(j=0;j<3;j++) printf("%-3d ",A[i][j]); } printf("\n"); for(i=0;i<3;i++)// Транспонируем for(j=0;j<3;j++) B[j][i]=A[i][j]; for(i=0;i<3;i++)//Печатаем транспонированный массив { printf("\n"); for(j=0;j<3;j++) printf("%-3d ",B[i][j]); } printf("\n"); return (0); }
Решение задачи: «Разбить код на функции (транспонирование матрицы)»
textual
Листинг программы
//C99 #include <stdio.h> #define N 3 #define M 3 void transp(int a[N][M],int b[N][M]) { int i,j; for(i=0;i<N;i++) for(j=0;j<M;j++) b[j][i]=a[i][j]; } void vivod(int a[N][M]) { int i,j; for(i=0;i<N;i++) { printf("\n"); for(j=0;j<M;j++) printf("%-3d ",a[i][j]); } } void vivod_trans(int b[N][M]) { int i,j; for(i=0;i<N;i++) { printf("\n"); for(j=0;j<M;j++) printf("%-3d ",b[i][j]); } } int main(void){ int a[N][M]={{1,2,4},{0,9,5},{8,6,3}}; int b[N][M]; vivod(a); transp(a,b); printf("\n"); vivod_trans(b); return(0); }
Объяснение кода листинга программы
- #include
включаем библиотеку для работы с консолью - #define N 3 определяем размер первой размерности массива (в данном случае 3)
- #define M 3 определяем размер второй размерности массива (в данном случае 3)
- void transp(int a[N][M],int b[N][M]) объявляем функцию для транспонирования матрицы, она принимает два массива (a и b) размерности N на M
- int i,j; объявляем две переменные для цикла
- for(i=0;i<N;i++) цикл по первой размерности матрицы
- for(j=0;j<M;j++) цикл по второй размерности матрицы
- b[j][i]=a[i][j]; копируем значение из массива a в массив b, меняя местами индексы
- void vivod(int a[N][M]) объявляем функцию для вывода содержимого матрицы a на экран
- int i,j; объявляем две переменные для цикла
- for(i=0;i<N;i++) цикл по первой размерности матрицы
- printf(
\n
); выводим символ новой строки - for(j=0;j<M;j++) цикл по второй размерности матрицы
- printf(
%-3d
,a[i][j]); выводим значение элемента матрицы с отступами - void vivod_trans(int b[N][M]) объявляем функцию для вывода транспонированной матрицы b на экран
- int i,j; объявляем две переменные для цикла
- for(i=0;i<N;i++) цикл по первой размерности матрицы
- printf(
\n
); выводим символ новой строки - for(j=0;j<M;j++) цикл по второй размерности матрицы
- printf(
%-3d
,b[i][j]); выводим значение элемента матрицы с отступами - int main(void){ объявляем основную функцию программы
- int a[N][M]={{1,2,4},{0,9,5},{8,6,3}}; инициализируем массив a значениями
- int b[N][M]; инициализируем массив b значением 0
- vivod(a); вызываем функцию вывода матрицы a
- transp(a,b); вызываем функцию транспонирования матрицы a и копируем результат в массив b
- printf(
\n
); выводим символ новой строки - vivod_trans(b); вызываем функцию вывода транспонированной матрицы b
- return(0); завершаем выполнение программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д