Все элементы массива, стоящие до максимального элемента, упорядочить по возрастанию - C (СИ)

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

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

Дан линейный массив из n элементов. Все элементы, стоящие до максимального элемента, упорядочите по возрастанию, а элементы, расположенные после него – по убыванию. Например: 231456123= 123456321 как то вот так.Помогите не получается блин...

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

textual
Листинг программы
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
 
int main()
{
   int array[] = {2, 3, 1, 4, 5, 6, 1, 2, 3};
   size_t nArray = sizeof(array) / sizeof(*array);
   size_t i, j, cur;
   int tmp;
 
   for (i = 0; i < nArray; ++i)
   {
      printf("%d ", array[i]);
   }
   printf("\n");
 
   size_t max = 0;
   for (i = 1; i < nArray; ++i)
   {
      if (array[max] < array[i])
      {
         max = i;
      }
   }
 
   for (i = 0; i < max - 1; ++i)
   {
      cur = i;
      for (j = i + 1; j < max; ++j)
      {
         if (array[cur] > array[j])
         {
            cur = j;
         }
      }
      tmp = array[cur];
      array[cur] = array[i];
      array[i] = tmp;
   }
 
   for (i = max + 1; i < nArray - 1; ++i)
   {
      cur = i;
      for (j = i + 1; j < nArray; ++j)
      {
         if (array[cur] < array[j])
         {
            cur = j;
         }
      }
      tmp = array[cur];
      array[cur] = array[i];
      array[i] = tmp;
   }
 
   for (i = 0; i < nArray; ++i)
   {
      printf("%d ", array[i]);
   }
   printf("\n");
 
   system("pause");
 
   return 0;
}

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

  1. Объявлен массив array типа int с 9 элементами.
  2. Переменная nArray инициализируется значением, равным результату деления sizeof(array) на sizeof(*array), то есть на размер одного элемента массива, что позволяет получить количество элементов в массиве.
  3. В цикле for с переменной i от 0 до nArray - 1 выводятся все элементы массива через пробел.
  4. Переменная max инициализируется значением 0. Она будет использоваться для хранения индекса максимального элемента массива.
  5. В цикле for с переменной i от 1 до nArray - 1 происходит поиск индекса максимального элемента массива.
  6. Переменная cur инициализируется значением i.
  7. В цикле for с переменной j от i + 1 до max включительно производится сравнение элементов массива, начиная с текущего элемента массива, с элементом, находящимся по индексу j. Если элемент с индексом j больше текущего, то значение переменной cur заменяется на j.
  8. Переменная tmp инициализируется значением текущего элемента массива.
  9. Значение текущего элемента массива заменяется на значение tmp, а значение tmp заменяется на значение текущего элемента массива.
  10. Цикл выполняется до тех пор, пока не будет найден элемент, меньший текущего.
  11. Переменная cur инициализируется значением i.
  12. В цикле for с переменной j от i + 1 до nArray включительно производится сравнение элементов массива, начиная с текущего элемента массива, с элементом, находящимся по индексу j. Если элемент с индексом cur меньше текущего, то значение переменной cur заменяется на j.
  13. Переменная tmp инициализируется значением текущего элемента массива.
  14. Значение текущего элемента массива заменяется на значение tmp, а значение tmp заменяется на значение текущего элемента массива.
  15. Цикл выполняется до тех пор, пока не будет найден элемент, больший текущего.
  16. Все элементы массива выводятся на экран.
  17. Выполняется функция pause, предназначенная для приостановки выполнения программы до нажатия клавиши.
  18. Программа возвращает 0, что означает успешное выполнение.

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


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

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

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