Отобразить матрицу симметрично относительно главной диагонали - C (СИ)
Формулировка задачи:
Заполнить матрицу А случайными числами .
Отобразить матрицу симметрично относительно главной диагонали.
Найти максимальный и минимальный элемент главной диагонали.
Решение задачи: «Отобразить матрицу симметрично относительно главной диагонали»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
#define predel 100
int i_comp(const void *a, const void *b)
{
return *(int*)a - *(int*)b;
}
int main(void)
{
int i, j, l, mat[N][N];
int diag[N];
for(i = 0; i < N; i++)
for(j = 0; j < N; j++)
mat[i][j] = rand() % predel;
printf("Заполняем матрицу случайными числами от 0 до %d:\n", predel);
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
printf("%d\t", mat[i][j]);
puts("\n\n");
}
puts("Отображаем матрицу симметрично по диагонали:\n");
j = 1;
l = 1;
for(i = 0; i < N; i++)
{
for(; j < N; j++)
mat[j][i] = mat[i][j];
j = ++l;
}
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
printf("%d\t", mat[i][j]);
puts("\n\n");
}
j = 0;
l = 0;
for(i = 0; i < N; i++)
{
diag[i] = mat[i][j];
j++;
}
qsort(diag, N, sizeof(int), i_comp);
printf("Минимаьный элемент диагонали: %d\n", diag[0]);
printf("Максимальный элемент диагонали: %d\n", diag[N-1]);
return 0;
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с I/O и для определения размера матрицы
- Определяем функцию сравнения для работы с qsort
- Задаем размерность матрицы N и максимальное значение элементов матрицы predel
- Заполняем матрицу случайными числами от 0 до predel
- Выводим заполненную матрицу на экран
- Выводим сообщение о том, что будем отображать матрицу симметрично по диагонали
- Создаем копию матрицы для сохранения исходных данных
- Сортируем элементы главной диагонали матрицы по возрастанию
- Выводим на экран минимальный и максимальный элементы главной диагонали
- Возвращаем 0, чтобы указать, что программа успешно завершилась