Постановка задания

Задание для всех вариантов звучит так (или, возможно, немного изменено, так как могут быть разные издания учебного пособия):

Задается размер массива $n$ и затем с клавиатуры вводится вещественный массив заданного размера. Решить задачу с применением указателя на массив и функций:

  • ввода количества элементов и элементов массива с клавиатуры;
  • построчного вывода элементов массива на экран;
  • обработки массива в соответствии с заданием.

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

Варианты заданий

ВариантЗадание
1.Упорядочить массив таким образом, чтобы его элементы возрастали по четным номерам и убывали по нечетным.
2.Упорядочить массив таким образом, чтобы его элементы возрастали до середины и затем до конца убывали.
3.Переставить элементы массива таким образом, чтобы сначала были расположены отрицательные элементы по возрастанию, затем нули, а после — остальные элементы.
4.Удалить все отрицательные элементы массива и расположить оставшиеся по убыванию.
5.Упорядочить элементы массива по возрастанию, удалив все повторяющиеся элементы.
6.Осуществить циклический сдвиг элементов массива на заданное число $k$, которое может быть положительным и отрицательным. Если $k > 0$, то последние $k$ элементов массива перемещаются на первые $k$ мест.
7.Удалить из массива наиболее повторяющееся число и отсортировать остальные элементы по возрастанию.
8.В одномерном массиве найти минимальный элемент среди элементов с нечетными номерами и максимальный элемент среди элементов с четными номерами. Отсортировать по неубыванию элементы массива, расположенные между этими элементами, включая оба числа.
9.Упорядочить массив таким образом: первым поставить минимальный элемент, вторым — максимальный, затем минимальный из оставшихся элементов и максимальный из оставшихся и т.д.
10.Вводятся два массива. Получить результирующий отсортированный массив, состоящий из неповторяющихся элементов двух массивов.
11.Удалить из массива повторяющиеся отрицательные элементы и упорядочить оставшиеся по невозрастанию.
12.Отсортировать по убыванию элементы массива, находящиеся между первым минимальным и последним максимальными элементами.
13.Отсортировать по возрастанию элементы массива, находящиеся между первым и последним нулевыми элементами.
14.Отсортировать по возрастанию элементы массива, находящиеся до минимального элемента.
15.Отсортировать по убыванию элементы массива, находящиеся после максимального элемента.
16.Отсортировать элементы массива, находящиеся между первым нулевым и первым максимальным элементами.
17.Удалить из массива все минимальные элементы, оставшиеся отсортировать по возрастанию.
18.Удалить из массива все отрицательные элементы, находящиеся между первым и вторым нулевыми элементами, и отсортировать оставшиеся по возрастанию.
19.Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоящие в нечетных позициях, а во второй половине — элементы, стоящие в четных позициях.
20.Преобразовать массив таким образом, чтобы сначала стояли все минимальные элементы, затем все максимальные элементы, а после них — остальные элементы.
21.Отсортировать элементы массива, находящиеся между первым минимальным и последним отрицательным максимальным элементами, включая оба числа.
22.Отсортировать элементы массива, находящиеся между первым максимальным и последним положительным максимальным элементами, включая оба числа.
23.Отсортировать элементы массива, находящиеся между первым минимальным и последним отрицательным максимальным элементами, включая оба числа.
24.Отсортировать элементы таким образом, чтобы нечетные элементы были расположены по возрастанию, а четные элементы — по убыванию.
25.Отсортировать элементы массива таким образом, чтобы положительные элементы были расположены по возрастанию, отрицательные элементы — по убыванию, а нулевые остались на своих местах.

Лабораторная работа $№6$ предполагает написание программы на языке Си. При заказе работы своего варианта вы получите качественно написанную и хорошо прокомментированную программу.

Дополнительно заказав алгоритм решения вашей задачи (мы крайне рекомендуем это сделать), получите аккуратно оформленный отчет-алгоритм, поясняющий все тонкости решения поставленной задачи.

Образец выполнения (вариант №12)

Условие задания

Отсортировать по убыванию элементы массива, находящиеся между первым минимальным и последним максимальными элементами.

Алгоритм решения задачи

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

➡ Какими бы ни были значения элементов исходного массива, в таком массиве всегда найдется минимальный и максимальный элемент, поэтому, процесса сортировки неизбежать (даже в случае, когда все элементы равны друг другу).

➡ Как найти первый минимальный элемент, а, точнее, индекс первого минимального элемента?

  1. Для решения этой подзадачи опишем отдельную функцию в программе.
  2. Запустим сканирование всех элементов массива от последнего к первому (обычно в процессе обработки массива его элементы просматривают, начиная с $1$-го, и двигаются к конечному). И будем просто нестрого сравнивать значение текущего элемента на равенство с минимальным из уже проверенных элементов. Это позволит найти последний минимальный при движении с конца в начало, но этот элемент будет являться первым минимальным, то есть иметь самый меньший индекс из всех минимальных элементов.Лабораторная работа №6. Степанов. Си. Программирование. МГТУ им.Баумана. Пример поиска первого минимального элемента массива

➡ Как найти последний максимальный элемент, а, точнее, индекс последнего максимального элемента?

  1. Для решения этой подзадачи опишем отдельную функцию в программе.
  2. Запустим сканирование всех элементов массива от первого к последнему. Будем просто нестрого сравнивать значение текущего элемента на равенство с максимальным из уже проверенных элементов. Это позволит найти последний максимальный при движении из начала в конец, то есть этот элемент будет иметь самый больший индекс из всех максимальных элементов.Лабораторная работа №6. Степанов. Си. Программирование. МГТУ им.Баумана. Пример поиска последнего максимального элемента массива

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

Реализуем сортировку строго по примеру, данному в методическом пособию, хотя, очевидно, что методов сортировки элементов массива существует безумное множество.Лабораторная работа №6. Степанов. Си. Программирование. МГТУ им.Баумана. Пример сортировки элементов массива между первым минимальным и последним максимальным элементами

Необходимые программные функции для кодирования

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

Название функцииНазначение функции
1.GetIndexFirstMinПолучение индекса первого минимального элемента массива.
2.GetIndexLastMaxПолучение индекса последнего максимального элемента массива.
3.FillVectorВвод количества элементов исходного массива и заполнение элементов массива вводом с клавиатуры.
4.PrintVectorПострочный вывод элементов массива на экран.
5.SortVectorСортировка по убыванию элементов массива, находящихся между первым минимальным и последним максимальным элементами.
6.mainГлавная функция программы (точка входа).

Единственное, очень желательно было бы разбить функцию FillVector на две подфункции: ввод количества элементов и заполнение элементов массива, т к все-таки это разные действия. Но составители требуют, чтобы эти действия выполнялись в рамках одной функции. Хорошо, реализуем так, как требуют в постановке задания.

 😡 Также составители хотят, чтобы студенты использовали для динамического выделения памяти оператор new, а для удаления динамической памяти оператор delete.

Все хорошо, да вот только это операторы языка программирования С++ и к языку «чистый» Си они не имеют абсолютно никакого отношения.

В языке Си для динамического перераспределения памяти используют функции malloc, calloc, realloc и free. По идее, именно эти функции и нужно бы применять…

Реализация задачи на языке Си

Результаты работы программы

№ тестаСмыслРезультат
1.Все элементы равны друг другу (отсортированный массив равен исходному)Лабораторная работа №6. Степанов. Си. Программирование. МГТУ им.Баумана. Тест №1 в консоли
2.Первый минимальный и последний максимальный соседние элементы (отсортированный массив равен исходному)Лабораторная работа №6. Степанов. Си. Программирование. МГТУ им.Баумана. Тест №2 в консоли
3.Между первым минимальным и последним максимальным элементом стоят $3$ элемента, но они изначально идут по убыванию (отсортированный массив равен исходному)Лабораторная работа №6. Степанов. Си. Программирование. МГТУ им.Баумана. Тест №3 в консоли
4.Между первым минимальным и последним максимальным стоят $4$ элемента (происходит сортировка «внутренних» элементов массива)Лабораторная работа №6. Степанов. Си. Программирование. МГТУ им.Баумана. Тест №4 в консоли

Стоимость заказа работы

💡 Стоимость одной программы из любого варианта составляет $200$ рублей.
💡 Стоимость алгоритма (в виде отчета в формате *.doc из любого варианта составляет $200$ рублей (заказывается опционально на ваше усмотрение, чтобы детально разобраться с решением лабораторной работы, например, не прибегая к консультации репетитора).

Для оформления заказа пишите на почту: proglabs@mail.ru.
Время нашего ответа обычно составляет не более 10 минут.