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

Объяснение кода листинга программы

  1. #include включаем библиотеку для работы с консолью
  2. #define N 3 определяем размер первой размерности массива (в данном случае 3)
  3. #define M 3 определяем размер второй размерности массива (в данном случае 3)
  4. void transp(int a[N][M],int b[N][M]) объявляем функцию для транспонирования матрицы, она принимает два массива (a и b) размерности N на M
  5. int i,j; объявляем две переменные для цикла
  6. for(i=0;i<N;i++) цикл по первой размерности матрицы
  7. for(j=0;j<M;j++) цикл по второй размерности матрицы
  8. b[j][i]=a[i][j]; копируем значение из массива a в массив b, меняя местами индексы
  9. void vivod(int a[N][M]) объявляем функцию для вывода содержимого матрицы a на экран
  10. int i,j; объявляем две переменные для цикла
  11. for(i=0;i<N;i++) цикл по первой размерности матрицы
  12. printf(\n); выводим символ новой строки
  13. for(j=0;j<M;j++) цикл по второй размерности матрицы
  14. printf(%-3d,a[i][j]); выводим значение элемента матрицы с отступами
  15. void vivod_trans(int b[N][M]) объявляем функцию для вывода транспонированной матрицы b на экран
  16. int i,j; объявляем две переменные для цикла
  17. for(i=0;i<N;i++) цикл по первой размерности матрицы
  18. printf(\n); выводим символ новой строки
  19. for(j=0;j<M;j++) цикл по второй размерности матрицы
  20. printf(%-3d,b[i][j]); выводим значение элемента матрицы с отступами
  21. int main(void){ объявляем основную функцию программы
  22. int a[N][M]={{1,2,4},{0,9,5},{8,6,3}}; инициализируем массив a значениями
  23. int b[N][M]; инициализируем массив b значением 0
  24. vivod(a); вызываем функцию вывода матрицы a
  25. transp(a,b); вызываем функцию транспонирования матрицы a и копируем результат в массив b
  26. printf(\n); выводим символ новой строки
  27. vivod_trans(b); вызываем функцию вывода транспонированной матрицы b
  28. return(0); завершаем выполнение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы