Вывод Транспонированной Матрицы
В этом заключительном шаге вы научитесь форматировать и выводить транспонированную матрицу с улучшенной читаемостью и обработкой ошибок. Мы улучшим предыдущую программу, чтобы сделать вывод более профессиональным.
Откройте файл matrix_transpose.c:
cd ~/project
nano matrix_transpose.c
Замените предыдущий код следующим улучшенным вариантом:
#include <stdio.h>
#define MAX_ROWS 100
#define MAX_COLS 100
void printMatrix(int matrix[MAX_ROWS][MAX_COLS], int rows, int cols, const char* title) {
printf("%s:\n", title);
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%4d ", matrix[i][j]);
}
printf("\n");
}
printf("\n");
}
int main() {
int rows, cols;
int matrix[MAX_ROWS][MAX_COLS];
int transposed[MAX_COLS][MAX_ROWS];
// Проверка входных данных
do {
printf("Введите количество строк (1-%d): ", MAX_ROWS);
scanf("%d", &rows);
} while (rows <= 0 || rows > MAX_ROWS);
do {
printf("Введите количество столбцов (1-%d): ", MAX_COLS);
scanf("%d", &cols);
} while (cols <= 0 || cols > MAX_COLS);
// Ввод элементов матрицы
printf("Введите элементы матрицы:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("Введите элемент [%d][%d]: ", i, j);
scanf("%d", &matrix[i][j]);
}
}
// Транспонирование матрицы
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
transposed[j][i] = matrix[i][j];
}
}
// Вывод матриц с отформатированным выводом
printMatrix(matrix, rows, cols, "Исходная матрица");
printMatrix(transposed, cols, rows, "Транспонированная матрица");
return 0;
}
Компилируем и запускаем программу:
gcc matrix_transpose.c -o matrix_transpose
./matrix_transpose
Пример вывода:
Введите количество строк (1-100): 3
Введите количество столбцов (1-100): 3
Введите элементы матрицы:
Введите элемент [0][0]: 1
Введите элемент [0][1]: 2
Введите элемент [0][2]: 3
Введите элемент [1][0]: 4
Введите элемент [1][1]: 5
Введите элемент [1][2]: 6
Введите элемент [2][0]: 7
Введите элемент [2][1]: 8
Введите элемент [2][2]: 9
Исходная матрица:
1 2 3
4 5 6
7 8 9
Транспонированная матрица:
1 4 7
2 5 8
3 6 9
Основные улучшения в этой версии:
- Добавлена проверка входных данных для размеров матрицы
- Создана отдельная функция
printMatrix() для лучшей организации кода
- Улучшен вывод матрицы с выравниванием формата с помощью
%4d
- Добавлено заголовки к выводу матриц для большей ясности
- Более надёжная обработка матриц разных размеров