0 / 0 / 2
Регистрация: 12.11.2012
Сообщений: 61
|
|||||||||||
1 | |||||||||||
Удалить N элементов массива, начиная с номера K16.10.2013, 16:52. Показов 5086. Ответов 15
Метки нет (Все метки)
Имеется массив заполняемый случайным образом. Задание удалить N элементов, начиная с номера K.
Как только дело доходит до удаления, программа крешится. Я пытаюсь переписать старый массив в новый (так и надо), просто исключая не нужные числа. Полный текст программы
момент в котором возникла сложность
0
|
16.10.2013, 16:52 | |
Ответы с готовыми решениями:
15
Удалить из массива N элементов, начиная с номера K Как удалить N элементов, начиная с номера K Удалить N элементов массива начиная с номера K Указатели . Удалить из одномерного массива элемент с заданным номером, добавить К элементов, начиная с заданного номера |
484 / 439 / 123
Регистрация: 05.01.2010
Сообщений: 1,848
|
||||||
16.10.2013, 16:55 | 2 | |||||
1
|
0 / 0 / 2
Регистрация: 12.11.2012
Сообщений: 61
|
|
16.10.2013, 16:58 [ТС] | 4 |
Спасибо. но по прежнему возникает краш. Может я что-то в цикле for не так написал?
0
|
16.10.2013, 17:10 | 5 | |||||
Попробуйте так, но может где-то не точно с условием, в студии не проверял.
0
|
0 / 0 / 2
Регистрация: 12.11.2012
Сообщений: 61
|
|
16.10.2013, 17:29 [ТС] | 6 |
Теперь в выводе остаются только Нули. Возможно еще где-то мой косяк. Вы брали еще один массив (mass). Изначально он у меня уже есть, только называется он (mas). Собственно из него то и нужно получить новый массив (arr). Если я изменяю ваш mass на mas, то он ругает за то, что такой уже есть. Если же все таки заменяю mass на mas, но убираю строку, где инициализирует mass(int [] mass = new int[arr.Length-n]). То при разном вводе, он показывает то нули, то сначала нули, а потом пару цифр из массива.
Добавлено через 5 минут поменял местами в вашем коде mas и arr, потихоньку работает, но криво, при большинстве тестов краш.
0
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
||||||||||||||||
16.10.2013, 18:31 | 7 | |||||||||||||||
Сообщение было отмечено Памирыч как решение
Решение
На сколько мне известно нельзя часть массива удалить, можно только не нужную часть массива заполнить нулями, по этому надо использовать 2 массива, первый заполняем числами, в нем ищем и если находим переписываем интересующие нас числа во второй массив, выглядит примерно так:
или можно так:
так лучше (правильнее) делать чем в первом варианте (это как раз и будет "удаление" не нужных элементов), вот весь код:
1
|
74 / 74 / 30
Регистрация: 22.03.2013
Сообщений: 224
|
||||||
16.10.2013, 18:33 | 8 | |||||
buntar,
0
|
0 / 0 / 2
Регистрация: 12.11.2012
Сообщений: 61
|
|
16.10.2013, 18:51 [ТС] | 9 |
Не совсем то что мне нужно. Мне необходимо удалить некий промежуток из N чисел начиная с числа стоящего под номером K.
Давайте сделаем так, чтоб и мне и всем было понятнее. Мы ввели и заполнили массив (mas) и ввели числа N и K. Новый массив поместим в массив arr. Какая будет остальная часть кода? т.е например mas размером 10 будет: 1 2 3 4 5 6 7 8 9 10. Число N=5, k=3. должно получиться массив arr : 1 2 8 9 10.
0
|
369 / 341 / 108
Регистрация: 12.02.2013
Сообщений: 653
|
||||||
16.10.2013, 19:46 | 10 | |||||
1
|
198 / 170 / 19
Регистрация: 05.05.2013
Сообщений: 1,235
|
||||||
16.10.2013, 20:08 | 11 | |||||
Может мудрено и специфично (да и где то что то можно укоротить) но работает:
Кликните здесь для просмотра всего текста
1
|
447 / 305 / 47
Регистрация: 23.01.2013
Сообщений: 661
|
||||||
16.10.2013, 20:52 | 12 | |||||
Мой скромный вариант
0
|
0 / 0 / 2
Регистрация: 12.11.2012
Сообщений: 61
|
|
17.10.2013, 15:21 [ТС] | 13 |
еще варианты?
P.S Должно все переписать во второй массив P.P.S Нельзя использовать Array Добавлено через 11 минут Diman777 Ваш метод вполне работает, но можно ли как-то сделать, чтобы удаляло не со следующей позиции после указанной, а именно с той, что указана?
0
|
60 / 59 / 15
Регистрация: 04.05.2010
Сообщений: 161
|
||||||
17.10.2013, 15:44 | 14 | |||||
Diman777, как я понял массив не изменяет, просто выводит не все его элементы. Для того чтобы выполнить ваше задание необходимо обязательно использовать второй массив. Вообще считается что Array в C# неизменяемые по размеру(потому что выделяется определнное количество памяти во время создания массива). Можно с помощью метода Array.Resize() удалить элементы с конца массива
Кликните здесь для просмотра всего текста
0
|
369 / 341 / 108
Регистрация: 12.02.2013
Сообщений: 653
|
|||||||||||
17.10.2013, 15:54 | 15 | ||||||||||
можно...
тогда так
1
|
0 / 0 / 2
Регистрация: 12.11.2012
Сообщений: 61
|
|
17.10.2013, 16:05 [ТС] | 16 |
нельзя использовать array
0
|
17.10.2013, 16:05 | |
17.10.2013, 16:05 | |
Помогаю со студенческими работами здесь
16
В динамическом массиве удалить N элементов, начиная с номера K (ошибка) Как применяя erase удалить в векторе n элементов, начиная с номера k? Сформировать одномерный динамически массив и удалить из него К элементов, начиная с заданного номера Исключить из массива M элементов, начиная с номера K Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |