В целочисленном векторе найти его вторые по значению минимальный и максимальный элементы - 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
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. // Вывод матрицы
  5. void print_matrix(int **matrixnn, int n)
  6. {
  7.     int i, j;
  8.     if (!matrixnn)
  9.         return;
  10.     for (i = 0; i < n; i++)
  11.     {
  12.         for (j = 0; j < n; j++)
  13.         {
  14.             printf("%3d", matrixnn[i][j]);
  15.         }
  16.         printf("\n");
  17.     }
  18. }
  19.  
  20. // Создание матрицы и заполнение случайными числами (от a до b)
  21. int **create_matrix(int n, int a, int b)
  22. {
  23.     int i, j;
  24.     int **matrixnn;
  25.     if (n <= 0)
  26.         return NULL;
  27.     matrixnn = (int**)malloc(n * sizeof(int*));
  28.     if (!matrixnn)
  29.         return NULL;
  30.     for (i = 0; i < n; i++)
  31.     {
  32.         matrixnn[i] = (int*)malloc(n * sizeof(int));
  33.         if (!matrixnn[i])
  34.         {
  35.             free(matrixnn);
  36.             return NULL;
  37.         }
  38.     }
  39.     for (i = 0; i < n; i++)
  40.     {
  41.         for (j = 0; j < n; j++)
  42.         {
  43.             matrixnn[i][j] = a + rand() % (b - a + 1);
  44.         }
  45.     }
  46.     return matrixnn;
  47. }
  48.  
  49. // Отражение элементов матрицы слева и справа от главных диагоналей
  50. void flip_matrix(int **matrixnn, int n)
  51. {
  52.     int i, j, t;
  53.     if (!matrixnn)
  54.         return;
  55.     for (i = 0; i < n / 2; i++)
  56.     {
  57.         for (j = 0; j < i; j++)
  58.         {
  59.             // Отразить верхние элементы (выше средней строки)
  60.             t = matrixnn[i][j];
  61.             matrixnn[i][j] = matrixnn[i][n - 1 - j];
  62.             matrixnn[i][n - 1 - j] = t;
  63.             // Отразить нижние элементы (ниже средней строки)
  64.             t = matrixnn[n - 1 - i][j];
  65.             matrixnn[n - 1 - i][j] = matrixnn[n - 1 - i][n - 1 - j];
  66.             matrixnn[n - 1 - i][n - 1 - j] = t;
  67.         }
  68.     }
  69.     // Отразить элементы в средней строке, если N нечетно
  70.     if (n % 2 > 0)
  71.     {
  72.         for (j = 0; j < n / 2; j++)
  73.         {
  74.             t = matrixnn[n / 2][j];
  75.             matrixnn[n / 2][j] = matrixnn[n / 2][n - 1 - j];
  76.             matrixnn[n / 2][n - 1 - j] = t;
  77.         }
  78.     }
  79. }
  80.  
  81. // Главная функция
  82. int main(int argc, char *argv[])
  83. {
  84.     int n = 5;
  85.     int **matrixnn = create_matrix(n, 1, n);
  86.     if (matrixnn)
  87.     {
  88.         printf("Matrix:\n");
  89.         print_matrix(matrixnn, n);
  90.         flip_matrix(matrixnn, n);
  91.         printf("\nMatrix after flipping:\n");
  92.         print_matrix(matrixnn, n);
  93.         free(matrixnn);
  94.     }
  95.     printf("\nPress any key to exit...");
  96.     getchar();
  97.     return 0;
  98. }

Объяснение кода листинга программы

Код начинается с двух функций: функции print_matrix(), которая выводит матрицу на экран, и функции create_matrix(), которая создает матрицу заданного размера, заполняет ее случайными числами в заданном диапазоне и возвращает указатель на эту матрицу. Затем идет функция flip_matrix(), которая отражает элементы матрицы слева и справа от главных диагоналей. Эта функция работает с матрицей, размер которой нечетным числом. В главной функции программы, после объявления переменной n (размер матрицы), создается матрица с помощью функции create_matrix() и выводится на экран с помощью функции print_matrix(). Затем вызывается функция flip_matrix(), которая отражает элементы матрицы, и результат также выводится на экран. Код завершается стандартным сообщением об успешном выполнении программы и призывом к пользователю нажать любую клавишу для выхода.

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


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

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

12   голосов , оценка 4.333 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы