В целочисленном векторе найти его вторые по значению минимальный и максимальный элементы - 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(), которая отражает элементы матрицы, и результат также выводится на экран. Код завершается стандартным сообщением об успешном выполнении программы и призывом к пользователю нажать любую клавишу для выхода.