Теоретический материал (Паскаль)
Удаление элементов из одномерного массива
Задача. Удалить из массива максимальный элемент, если все элементы разные.
Для того, чтобы решить задачу нужно:
- найти номер максимального элемента k;
- сдвинуть все элементы, начиная с k-го, на один элемент влево;
- последнему элементу присвоить значение 0;
- уменьшить количество элементов массива на единицу.
Рассмотрим задачу на конкретном примере. Пусть дан одномерный массив из целых чисел, состоящий из 10 элементов:
6, 3, 4, 7, 11, 2, 13, 8, 1, 5.
Номер максимального элемента равен 7 (k=7), то есть, начиная с 7-го элемента, будем сдвигать элементы на один влево: 7-му присвоим значение 8-го, 8-му присвоим значение 9-го, 9-му присвоим значение 10-го, на этом сдвиг заканчивается. Таким образом, сдвиг начинается с k-го элемента и идет по (n-1)-й (где n - количество элементов в массиве). После этого последнему элементу присвоим значение, равное 0, и тогда массив будет следующим:
6, 3, 4, 7, 11, 2, 8, 1, 5, 0.
Примечание. При удалении элемента размерность массива не изменяется.
Составим программу, удаляющую максимальный элемент из одномерного массива. В программе опустим уже знакомые Вам процедуры заполнения массива и вывода элементов массива на экран. Чтобы последний элемент не выводился, модифицируйте соответствующую процедуру таким образом, чтобы ей передавать не только массив, но и количество элементов, которые надо вывести, начиная с первого.
Program DeleteK; |
Задание. На основе имеющегося шаблона программы и рассмотренного алгоритма решения задачи, закончите составление работающей программы.
Изменим условие задачи. Пусть максимальный элемент встречается несколько раз.
Для решения этой задачи необходимо удалять несколько элементов. Это лучше сделать с конца массива, так как иначе, возможно, придется снова возвращаться к элементу с номером, который только что удаляли. Эта ситуация может возникнуть в случае, когда в массиве подряд идут два максимальных элемента. При удалении первого на его месте будет стоять второй максимальный элемент.
Просмотр элементов массива с конца можно реализовать при помощи цикла с параметром (downto). Кроме того, номер максимального элемента запоминать не будем. При прохождении массива с конца, если элемент имеет максимальное значение, то удалим его, при этом значение счетчика k будем увеличивать на 1.
Задание. С учетом изложенного выше составьте программу, решающую поставленную задачу или дополните предыдущую.
Внимание! Любая Ваша программа должна сопровождаться комментариями.