В целочисленном векторе найти его вторые по значению минимальный и максимальный элементы - C (СИ)

Узнай цену своей работы

Формулировка задачи:

В целочисленном массиве matrixnn поменять местами (отразить зеркально) соответствующие элементы, расположенные левее главной и побочной диагоналей и правее них. Элементы диагоналей не трогать. Входные данные для n=5: v_min=-20 v_max=10 Исходный массив: 7 -2 -11 3 -5 5 2 0 10 1 -15 9 -12 8 -18 0 -10 9 -13 4 -1 -17 2 4 -19 Выходной массив: 7 -2 -11 3 -5 1 2 0 10 5 -18 8 -12 9 -15 4 -10 9 -13 0 -1 -17 2 4 -19

Решение задачи: «В целочисленном векторе найти его вторые по значению минимальный и максимальный элементы»

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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.333 из 5
Похожие ответы