|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
31.03.2013, 22:47 | #1 |
человек
Форумчанин
Регистрация: 11.05.2009
Сообщений: 517
|
Удалить элемент массива
Можно как то удалить элемент динамического массива, оставив элементы в порядке каком были плюс уменьшив его размер
Вот например: был массив 1,2,3,4,5,6,7,8,9 мне надо удалить 3 стал массив 1,2,4,5,6,7,8,9 _____________ Свойственно, есть задача к которой я придумал алгоритм, и пытаюсь реализовать, только вот не знаю как быть с проблемой которая выше. Есть считалка, я ввожу количество слов, и игроков. например: 8 слов и 5 игроков ___________________ слова :1 2 3 4 5 6 7 8 игроки: 1 2 3 4 5 2 3 4 ____________________ 4-й игрок выбывает ___________________ слова :1 2 3 4 5 6 7 8 игроки: 1 2 3 1 2 3 1 2 ____________________ 2-й игрок выбывает _______________________ слова :1 2 3 4 5 6 7 8 игроки: 1 3 1 3 1 3 1 3 _____________________ 3-й выбывает, остается 1-й игрок Я думаю, что если таким образом удалять из массива тот или иной элемент(игроков) то останется один, который можно будет вывести в результат выигравшего игрока! Что скажете? Последний раз редактировалось viks1; 31.03.2013 в 22:51. Причина: Менял заглавие |
31.03.2013, 23:41 | #2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Можно удалить N-й элемент, сдвинув все элементы, начиная с (N+1)-го на одну позицию в сторону начала массива.
Можно уменьшить размер массива, выделив другой массив нужного размера, скопировав туда содержимое исходного и удалить исходный. Можно совместить эти две операции, чтобы не копировать массив дважды. Но в любом случае - это достаточно ресурсоемкая операция. Кроме того, в Вашем примере, насколько я понимаю, Вы хотите удалять не один элемент, а несколько элементов, имеющих совпадающие идентификаторы. Это тоже можно сделать за один проход цикла, если известно количество удаляемых элементов и за два - если заранее неизвестно. Кроме того, можно держать массив максимальной длины и отдельно переменную, которая указывает, насколько он заполнен. Тогде описанная выше операция будет осуществляться за один проход. |
31.03.2013, 23:46 | #3 | ||
человек
Форумчанин
Регистрация: 11.05.2009
Сообщений: 517
|
Цитата:
Цитата:
Последний раз редактировалось viks1; 31.03.2013 в 23:50. |
||
01.04.2013, 07:39 | #4 | ||
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Цитата:
Цитата:
Но если Вам нужно использовать часть массива, вполне уместно хранить номер последнего элемента (который при необходимости менять - при добавлении или уничтожении части элементов). |
||
01.04.2013, 07:45 | #5 | |
человек
Форумчанин
Регистрация: 11.05.2009
Сообщений: 517
|
Цитата:
Я пробовал, только не совсем корректно получалось. Да, оно заменяло нужный элемент, но я не знаю как перевести все это в функции и когда надо вызывать столько раз, сколько нужно. Я мог вызвать всего один раз!(и то не функцию, а просто процедуру на ButtonClick) Код:
|
|
02.04.2013, 13:35 | #6 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
Этот код не может корректно работать, т.к. в нем используются неинициализированные переменные.
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удалить елемент из списка | Pein95 | Общие вопросы C/C++ | 1 | 31.01.2013 03:08 |
Найти минимальний елемент массива. ПРием данних как указатель на начало масива , и как копию данных. | galaxyblazer | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 17.04.2012 16:57 |
По массивам, SOS! из целочисленного массива удалить из массива элементы, встречающиеся менее 3-х раз | prelest' | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 23.05.2011 22:37 |
Удалить элемент массива | pavel42 | Помощь студентам | 14 | 21.05.2009 08:52 |