В целочисленном векторе найти его вторые по значению минимальный и максимальный элементы - C (СИ)
Формулировка задачи:
Решение задачи: «В целочисленном векторе найти его вторые по значению минимальный и максимальный элементы»
- #include <stdio.h>
- #include <stdlib.h>
- // Вывод матрицы
- void print_matrix(int **matrixnn, int n)
- {
- int i, j;
- if (!matrixnn)
- return;
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- printf("%3d", matrixnn[i][j]);
- }
- printf("\n");
- }
- }
- // Создание матрицы и заполнение случайными числами (от a до b)
- int **create_matrix(int n, int a, int b)
- {
- int i, j;
- int **matrixnn;
- if (n <= 0)
- return NULL;
- matrixnn = (int**)malloc(n * sizeof(int*));
- if (!matrixnn)
- return NULL;
- for (i = 0; i < n; i++)
- {
- matrixnn[i] = (int*)malloc(n * sizeof(int));
- if (!matrixnn[i])
- {
- free(matrixnn);
- return NULL;
- }
- }
- for (i = 0; i < n; i++)
- {
- for (j = 0; j < n; j++)
- {
- matrixnn[i][j] = a + rand() % (b - a + 1);
- }
- }
- return matrixnn;
- }
- // Отражение элементов матрицы слева и справа от главных диагоналей
- void flip_matrix(int **matrixnn, int n)
- {
- int i, j, t;
- if (!matrixnn)
- return;
- for (i = 0; i < n / 2; i++)
- {
- for (j = 0; j < i; j++)
- {
- // Отразить верхние элементы (выше средней строки)
- t = matrixnn[i][j];
- matrixnn[i][j] = matrixnn[i][n - 1 - j];
- matrixnn[i][n - 1 - j] = t;
- // Отразить нижние элементы (ниже средней строки)
- t = matrixnn[n - 1 - i][j];
- matrixnn[n - 1 - i][j] = matrixnn[n - 1 - i][n - 1 - j];
- matrixnn[n - 1 - i][n - 1 - j] = t;
- }
- }
- // Отразить элементы в средней строке, если N нечетно
- if (n % 2 > 0)
- {
- for (j = 0; j < n / 2; j++)
- {
- t = matrixnn[n / 2][j];
- matrixnn[n / 2][j] = matrixnn[n / 2][n - 1 - j];
- matrixnn[n / 2][n - 1 - j] = t;
- }
- }
- }
- // Главная функция
- int main(int argc, char *argv[])
- {
- int n = 5;
- int **matrixnn = create_matrix(n, 1, n);
- if (matrixnn)
- {
- printf("Matrix:\n");
- print_matrix(matrixnn, n);
- flip_matrix(matrixnn, n);
- printf("\nMatrix after flipping:\n");
- print_matrix(matrixnn, n);
- free(matrixnn);
- }
- printf("\nPress any key to exit...");
- getchar();
- return 0;
- }
Объяснение кода листинга программы
Код начинается с двух функций: функции print_matrix(), которая выводит матрицу на экран, и функции create_matrix(), которая создает матрицу заданного размера, заполняет ее случайными числами в заданном диапазоне и возвращает указатель на эту матрицу. Затем идет функция flip_matrix(), которая отражает элементы матрицы слева и справа от главных диагоналей. Эта функция работает с матрицей, размер которой нечетным числом. В главной функции программы, после объявления переменной n (размер матрицы), создается матрица с помощью функции create_matrix() и выводится на экран с помощью функции print_matrix(). Затем вызывается функция flip_matrix(), которая отражает элементы матрицы, и результат также выводится на экран. Код завершается стандартным сообщением об успешном выполнении программы и призывом к пользователю нажать любую клавишу для выхода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д