|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
09.06.2018, 22:54 | #1 |
Регистрация: 09.06.2018
Сообщений: 3
|
Избавление массива от одинаковых элементов
Нужно массив из чисел избавить от повторяющихся элементов
Код:
_____ Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ) Модератор Но после прохода массива через эту процедуру в нём всё ещё остаются одинаковые значения, помогите разобраться Последний раз редактировалось Serge_Bliznykov; 09.06.2018 в 23:03. |
09.06.2018, 23:11 | #2 | |
Форумчанин
Регистрация: 12.04.2017
Сообщений: 889
|
Цитата:
|
|
09.06.2018, 23:13 | #3 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
во-первых, код с ошибкой. Массив b - у Вас это массив открытого типа (open array).
Они всегда нумеруются от нуля. ну и насчёт 5 - это очень смелое допущение. почитайте, например, статью GunSmoker'а - Параметры типа открытый массив и "array of const" возможно, Вам будет удобнее объявить свой тип массива и его передавать в процедуру. например, Код:
randomize не желательно вызывать многократно. лучше это делать один раз в главном тебе программы (после главного Begin или в процедуре иницилизации). в-третьих, вы найденные повторы заменяете на случайные числа. ну, разумеется, они могут совпасть с теми числами, которые есть в массиве. Какова вообще изначальная цель? Чем и как заполняется массив изначально? Может быть, проще сразу заполнить массив без повторов? ну, или попробуйте такой код: Код:
|
09.06.2018, 23:26 | #4 |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
Немного не по теме, но по коду.
Код:
Код:
|
09.06.2018, 23:26 | #5 | |
Регистрация: 09.06.2018
Сообщений: 3
|
Цитата:
Во вторых мне для одной программы нужно что бы в массиве были не совпадающие элементы а массив изначально заполняется случайно. В третьих почему-то код не работает, бывают пробеги когда есть одинаковые числа Последний раз редактировалось Kolgute; 09.06.2018 в 23:38. |
|
10.06.2018, 09:49 | #6 | ||||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Тогда просто загуглите - Open Array Pascal Это совсем не то же самое, что динамические массивы. Цитата:
пропускаете первый элемент массива и совершенно самонадеянно считаете, что массив ровно на 6 элементов. Если Вам реально нужен массив открытого типа, то будьте добры с ним работать так, как положено: Код:
Цитата:
Цитата:
Или Ваш? Если Ваш - то я Вам объяснил почему он не работает. Потому что, когда Вы нашли два одинаковых числа, вы генерите новое случайное число. Оно легко может совпасть с числом, которое уже есть (и на практике - совпадает). В результате Вы заменяете на число, которое является повтором. Ещё есть вопросы? |
||||
10.06.2018, 13:41 | #7 | |
Регистрация: 09.06.2018
Сообщений: 3
|
Цитата:
А если взять массив случайно сгенерированный, потом 1 число сравнить со всеми и если совпадает то рандомить заного и так пока не будет повтора, так со 2 , 3 и т.д то сработает? |
|
11.06.2018, 21:03 | #8 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
я и написал в своём примере. но код не проверял. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Задача с обнулением одинаковых элементов массива | MarkAfe | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 28.09.2017 19:05 |
C++ Cумма одинаковых отрицательных элементов массива | SilentPerson | Помощь студентам | 0 | 08.05.2017 01:06 |
Дан целочисленный массив размера N, содержащий ровно два одинаковых элемента. Найти номера одинаковых элементов и вывести эти номе | Alexar Makken | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 23.12.2011 22:07 |
удаление одинаковых элементов из массива | sauron99 | Общие вопросы Delphi | 6 | 15.04.2009 21:27 |
поиск одинаковых элементов одномерного массива и их количества | MyQwErTy | Помощь студентам | 2 | 28.02.2009 17:17 |