Это реальный код, который вы использовали в своем приложении? Потому что это неправильно.
Синтаксис для оператора for
:
for (Initialization; Condition to continue with the loop; Step Operation) {}
В вашем случае вы должны использовать что-то вроде этого:
#define COLS 10
#define ROWS 5
int mat[COLS][ROWS];
int mat2[ROWS][COLS];
int i, j;
for (i = 0; i < COLS; i ++) {
for (j = 0; j < ROWS; j++) {
mat2[j][i] = mat[i][j];
}
}
Таким образом, это может транспонировать вашу матрицу.
Естественно, таким образом, вам нужно заранее знать размеры матрицы. Другим способом может быть динамическая инициализация вашей матрицы с использованием данных, предоставленных пользователем, например:
int ** mat;
int ** mat2;
int cols, rows;
int i, j;
/* Get matrix dimension from the user */
mat = (int **) malloc (sizeof(int *) * cols);
for (i = 0; i < cols; i++) {
mat[i] = (int *) malloc (sizeof(int) * rows);
}
Таким образом, вы динамически инициализируете матрицу, а затем можете перемещать ее так же, как и раньше.