![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Как записать условие для удаления повотряющихся и как удалить повторяющиеся все элементы.
Вот мой код для этой подпрограммы, что нужно исправить/дописать? Код:
|
#2
|
|||
|
|||
![]() Код:
можно еще сделать копированием - создавать новый массив, при этом вставлять в него только те элементы, которых внем еще нет. |
#3
|
|||
|
|||
![]() Ладно, а как реализовать удаление?
|
#4
|
|||
|
|||
![]() Ну люди помогите, пожалуйста, очень нужно
|
#5
|
||||
|
||||
![]() Для начала скажи что это за тип TArray100 ?
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#6
|
|||
|
|||
![]() Тип массива назван для удобства.
А тип объявил так: type TArray100=array[1..100]of integer; |
#7
|
|||
|
|||
![]() Это статический массив. Ты все-равно не можешь физически удалить в нем элемент. Ты можешь только пометить его как удаленный. Либо переделывай на динамический, либо надо изобретать механизм, указывающий, что элемент удален.
|
#8
|
|||
|
|||
![]() А как сесь можно реализовать удаление вставкой.
Могу выложить код того же массива, но там удаляет все четные элементы и нормально работает. |
#9
|
||||
|
||||
![]() Есть логическое и физическое удаление. В случае с физическим удалением размер массива меняется в зависимости от количества элементов, а вот в случае логического удаления размер массива будет неизменным, но количество элементов может менятся.
Удаление элементов из статического массива можно реализовать таким образом: Код:
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#10
|
|||
|
|||
![]() Тогда у меня правильно реализовано удаление, код подпрограммы в первом посту.
Я массив сортирую для удобного удаления, но задача моя удалить все повторяющиеся элементы, а у меня удаляет все, кроме последнего повторяющегося элемента. Например 5 1 2 4 8 9 5 4 5 5 4, то удаляет все 4 и 5 кроме последних После моей процедуры получится такой новый массив 1 2 4 5 8 9, а мне нужно получить такой массив 1 2 8 9. То есть удалить все 4 и 5. Может с условием что-то не так? Извините пожалуйста, если вас заставил делать ту же работу, которую проделал я. |
#11
|
|||
|
|||
![]() делай копированием - не ошибешься.
Код:
в конце работы программы получишь массив B, в котором нет повторяющихся элементов. |
#12
|
||||||||||||
|
||||||||||||
![]() 1. Выдает ошибку о несовместимости типов.
2. Исходный массив я уже передаю по ссылке. Вот код всех моих подпрограмм: Создание массива Код:
Код:
Код:
Код:
Код:
Код:
|
#13
|
||||
|
||||
![]() Ну выложил я коды своих процедур, как мне изменить свою процедуру удаления элементов из массива?
В написаной программе выдает ошибку о несовместимости типов в этих строках Код:
Код:
|
#14
|
|||
|
|||
![]() Если использование именно массива:
TArray100=array[1..100]of integer; это не жесткое условие задачи. То, как вариант, можно использовать TStrings... --------------- Sorry, не заметил, что вариант уже предлагался. Надо удалить это сообщение. Последний раз редактировалось roamer, 21.11.2010 в 19:50. |
#15
|
||||||
|
||||||
![]() Код:
А надо: "просмотреть все элементы с последнего до первого, и если в промежутке между первым и текущим есть еще один текущий - удалить текущий". Думаю примерно так: Код:
Код:
Оба кода протестил - вроде пашет. З.Ы. при удалении элементов лучше не юзать FOR-циклы: у них количество итераций определяется сразу, и от изменения границ внутри цикла ниче не меняется. jmp $ ; Happy End! The Cake Is A Lie. Последний раз редактировалось Bargest, 21.11.2010 в 20:22. |