Транспонирование матрицы - C (СИ) (73680)

Узнай цену своей работы

Формулировка задачи:

Нужно транспонировать матрицу тобишь A[j][i] сделать A[i][j] Вот мой код
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#include <Windows.h>
 
#define Left 1
#define Right 100
#define N 10
#define M 10
 
int main(void)
{
    int i, j;
    int A[N][M];
    int transp_A[N][M];
    SetConsoleCP(1551);
    SetConsoleOutputCP(1251);
    srand((unsigned)time(NULL));
    for (i = 0; i < N; i++)
        for (j = 0; j < M; j++)
            A[i][j] = (rand() % Right) + Left;
    printf("Исходная матрица:\n");
    for (i = 0; i < N; i++)
    {
        for (j = 0; j < M; j++)
        {
            printf("%5d", A[i][j]);
        }
        putchar('\n');
    }
    printf("Транспонированная матрица:\n");
    for(i=0;i<N;i++)
    {
        for(j=0;j<M;j++)
        {
            transp_A[j][i]=A[i][j];
            printf("%5d",transp_A[j][i]);
        }
            putchar('\n');
    }
    _getch();
    return 0;
}
что я делаю не так?

Решение задачи: «Транспонирование матрицы»

textual
Листинг программы
#include <stdio.h>
#define ROW 2
#define COL 5
 
int mat_a[ROW][COL] = {
                {0,1,2,3,4},
                {5,6,7,8,9}
              };  // исходная матрица
 
int trans_mat[COL][ROW];  // заготовка для транспонированной матрицы (пустая)
 
 
 
 
void transparacy_matr(int *matA, int *matT, int matArow, int matAcolmn);
 
void print_matr(int *matriX, int roW, int coL);
 
int main(void)
{
    int *ptr_matr, *ptr_matr_Tr; // указатели на исходную и загатовку
 
    ptr_matr = mat_a[0];         // инициализация указателей значениями (нулевые знач. массивов указателей)
    ptr_matr_Tr = trans_mat[0];  // для 3-х мерного случая (если mat_a[7][3][5]) было бы так: ptr_matr = mat_a[0][0]
 
    print_matr(ptr_matr, ROW, COL);    // печать исходной матрицы правильный порядок строк и столбцов
 
    transparacy_matr(ptr_matr, ptr_matr_Tr, ROW, COL);  // транспонирование исходной матрицы
 
    printf("\n<br>");    // печать разделителя
 
    print_matr(ptr_matr_Tr, COL, ROW);  // печать транспонированной матрицы (строки ROW меняются местом cо столбцами COL)
 
  return 0;
}
//##################################
void transparacy_matr(int *matA, int *matT, int matArow, int matAcolmn)
{
    int i,j;
 
    for(i=0; i < matArow; i++)
    for(j=0; j < matAcolmn; j++)
        matT[i + matArow*j] = matA[i*matAcolmn + j];  // индексы идут по столбцам matT, а в matA по строкам
 
}
//##################################
void print_matr(int *matriX, int roW, int coL)
{
    int i;
 
        for(i=0; i < roW*coL; i++)
            {
              if(i%coL==0)
              printf("\n");
 
              printf("  %d", matriX[i]);
 
            }
}

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

  1. Объявление переменных и массивов:
    • mat_a - исходная матрица размером ROW x COL
    • trans_mat - матрица для транспонированной матрицы размером COL x ROW
    • ROW и COL - константы, определяющие размерность матрицы
    • ptr_matr и ptr_matr_Tr - указатели на исходную и транспонированную матрицы соответственно
    • main - функция, содержащая основной код программы
    • transparacy_matr - функция для транспонирования матрицы
    • print_matr - функция для печати матрицы
  2. Инициализация указателей:
    • ptr_matr инициализируется значением первого элемента первого столбца исходной матрицы
    • ptr_matr_Tr инициализируется значением первого элемента первого столбца транспонированной матрицы
  3. Печать исходной матрицы:
    • Вызывается функция print_matr с указателем на исходную матрицу и ее размерностью
  4. Транспонирование матрицы:
    • Вызывается функция transparacy_matr с указателями на исходную и транспонированную матрицы и их размерностью
  5. Печать транспонированной матрицы:
    • Вызывается функция print_matr с указателем на транспонированную матрицу и ее размерностью
  6. Завершение программы:
    • Возвращается 0 из функции main, что означает успешное завершение программы

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


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

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

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