Разбить код на функции (транспонирование матрицы) - 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); завершаем выполнение программы