Транспонирование матрицы - 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;
}
что я делаю не так?

Код к задаче: «Транспонирование матрицы - C (СИ) (73680)»

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_____________");    // печать разделителя
 
    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]);
 
            }
}

8   голосов, оценка 4.000 из 5


СОХРАНИТЬ ССЫЛКУ