C++: Массивы, сортировка и нахождение минимальных-максимальных индексов

Дан массив вещественных чисел X=(x1,x2,..,xn). Записать элементы
заданного массива Х в массив Y следующим образом: в начальной части
расположить положительные элементы в порядке возрастания, затем в
порядке убывания отрицательные элементы, нулевые элементы не
записывать. Оценить, как при этом изменилось положение максимального
и минимального элементов массива.
Использовать функции.

Задачка простая на вид. Приступаем. У нас есть массивы, целых два. с ними нужно уметь делать следующее:

  • Создавать (Random)
  • Выводить на экран
  • Сортировать
  • Дополнять элементами (для второго массива)

Алгоритм работы программы:

  1. Заполнить массив X
  2. Вывести массив X
  3. Выбрать положительные элементы записать их в Y, запомнить индекс последнего добавленного
  4. Выбрать отрицательные элементы массива X и дописать их в Y
  5. Вывести массив Y на консоль
  6. Отсортировать и вывести на экран массив Y
  7. Получить индексы минимального и максимального элементов сначала для X, а пото для Y и вывести эти данные на консоль.

Для заполнения массива опишу функцию void createRandArray(float x [], int n) принимает на вход вещественный массив и размер этого массива:

Вообщепо-хорошему функцию нужно сделать немного другой, что бы можно было задавать границы, но я сделал константами, ибо не так важно.

Для вывода буду использовать функцию void printArray(float x [], int n) параметры ровно такие же как и у предыдущей — массив и его размер.

Далее мне потребуется функция, которая будет брать положительные элементы из массива X и писать их в Y. Это будет int createYArray(float x[], float y[], int n) Для работы ей нужно передать массив X — откуда брать элементы, массив Y, куда их помещать и n — количество элементов массива X. Функция возвращает целое число — индекс последнего помещенного элемента в Y.

На шаге 4 нужно дописать отрицательные элементы в Y. Тоже оберну эту операцию в функцию с именем int addNegativeToY(float x[], float y[], int last_index, int n). По своему строению напоминает предыдущую, но с той разницей что добавился еще один параметр — int last_index. Это индекс в массиве Y, на котором остановилась предыдущая функция. То есть со следующего номера можно дописывать элементы.

Функция сортировки взята отсюда без изменений.

В прошлой задаче, так же нужно было искать индексы. Но функцией я тогда не оформил. Вот сейчас пришлось. Но мне как обычно лень, поэтому и min и max индексы получаются путем вызова одной единственной функции с разными параметрами. Для управления знаком неравенства внутри функции используется тот же прием что и в сортировке — логическое отрицание.

Таким образом, собрав все воедино, получается такой код:

Пример работы программы:

Добавить комментарий