|
0 / 0 / 0
Регистрация: 26.11.2018
Сообщений: 14
|
||||||
Нужен совет по коду31.01.2019, 20:41. Показов 1639. Ответов 14
Приветствую, хотелось бы услышать ваши предложения по следующей задаче.
Есть array[100] в который мы добавляем 5 элементов (объектов класса, которые уникальны), остальные значения null. У нас есть метод delete(), в который мы передаем значение, по которому хотим найти и удалить один из элементов массива (я его заменяю на null). После чего мы сдвигаем пустую ячейку вправо, передвигая оставшиеся элементы влево. В итоге размер массива не меняется, а оставшиеся элементы красиво сидят в начале массива. Также есть переменная values, которая хранит число элементов массива, которые не null (ее мы используем для того, что бы при поиске элемента внутри массива не перебирать все его элементы, а только те, которые содержат значения). Использовать что-то кроме простого массива нельзя. В общем код:
0
|
||||||
| 31.01.2019, 20:41 | |
|
Ответы с готовыми решениями:
14
Нужен совет по коду
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 31.01.2019, 20:54 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 26.11.2018
Сообщений: 14
|
|
| 31.01.2019, 20:57 [ТС] | |
|
В смысле? Не заменять значение ячейки на null? А что тогда лучше с ней сделать?
0
|
|
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|
| 31.01.2019, 21:00 | |
|
gangmaster, у тебя какой-то неправильный подход в целом. Зачем нужен массив на 99% пустой? Опиши задачу
0
|
|
|
0 / 0 / 0
Регистрация: 26.11.2018
Сообщений: 14
|
||||||
| 31.01.2019, 21:21 [ТС] | ||||||
|
В этом то вся и фишка, что надо плясать от того, что есть. Яб уже давно все решил при помощи того же ArrayList, но нельзя.
По задаче дано: Пустой массив на 100 элементов. Ты должен добавить в его начало 5 объектов, у которых есть параметр, ну допустим name, то есть Target1.name = "target1". Мы берем этот объект и добавляем его в массив, то есть у нас выходит array[0] = target1, дальше повторяем с остальными четырьмя элементами, в итоге получаем array[target1,target2,target3,target4,target5, null...null]. Далее нас просят удалить объект, который имеет name = "target3". Мы запускаем поиск по имеющимся ячейкам массива, которые не соответствуют null (тоесть target1,target2 ... target5), и ищем соответствие array[i].value.equals(value) ? Если нашли, то меняем его на null (ну я заменяю на null, может есть способ круче, я не знаю), а потом этот null сдвигаем в конец имеющихся значений не равных null, то есть получаем следующие: array[target1,target2,target4,target5,null...n ull]. Элементов не null стало 4 (что я меняю в значение values, что бы в следующие поиски искать уже среди 4х, а не 5 элементов), а наш массив остался той же длины, что и был, то есть мы не потеряли ячейку, а просто освободили ее для дальнейшего заполнения. Если же программу попросить выдать нам размер массива (его реально заполненные ячейки), то она выдаст значение 4, а не 100, то есть только заполненные ячейки. Собственно код то работает и делает, что надо, но два цикла - это криво, надо как-то компактней оптимизировать, а как я не допру 8( Да в коде забыл счетчик values уменьшить после удаления элемента.
0
|
||||||
|
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
|
|||||||
| 31.01.2019, 21:59 | |||||||
|
2) если вы все время используете(удалить, добавить, найти первый, найти все такие что..) элементы массива через доступ к ним по их значению а не по индексу массива, то нет смысла все не нулл вперед. Лишний цикл. 3) Надо использовать больше методов и меньше повторений. Например у вас есть метод boolean delfirst(Target target), значит я бы сделал приблизительно так :
А вообще сейчас пришла в голову мысль на счет методов pull() and push(); Добавлено через 7 минут Ну и конечно счетчик на количество поставил бы, при успешном добавлении/удалении
0
|
|||||||
|
0 / 0 / 0
Регистрация: 26.11.2018
Сообщений: 14
|
||||||
| 31.01.2019, 22:02 [ТС] | ||||||
|
Я писал выше: (объектов класса, которые уникальны), то есть одинаковых по условию задачи нет.
Методы это конечно красиво, но у нас есть метод delete, в котором все и должно реализоваться. Тут как в армии: Вот тебе лопата, строй забор 8) Кароче я сделал так:
0
|
||||||
|
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
|
|||||||||||
| 31.01.2019, 23:28 | |||||||||||
Сообщение было отмечено gangmaster как решение
Решение
gangmaster, вот тебе идея. Метод - одна строка
1
|
|||||||||||
|
0 / 0 / 0
Регистрация: 26.11.2018
Сообщений: 14
|
||||||
| 01.02.2019, 00:48 [ТС] | ||||||
|
Это интересно, спасибо 8) Правда у нас по условию задачи передается String value = "имя", но это можно обыграть 8)
Добавлено через 1 час 1 минуту Если кому интересно будет, дали еще один совет. Без использования arraycopy, с учетом того, что нам без разницы в каком порядке элементы в массиве(мы просто тупо затираем наш value другим элементом, просто переставляя его на место другой элемент массива), ибо мы все равно при поиске перебираем все не null элементы.
0
|
||||||
|
2759 / 2066 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
|
|||||||||||
| 01.02.2019, 10:08 | |||||||||||
|
gangmaster, гля, совершенно классическое решение)).
Да, мы же взрослые люди, чтобы не говорить о позиции элемента в массиве...
1
|
|||||||||||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
|
|
| 01.02.2019, 13:30 | |
|
1
|
|
|
0 / 0 / 0
Регистрация: 26.11.2018
Сообщений: 14
|
|
| 01.02.2019, 16:23 [ТС] | |
|
Да не нужен. Ваша правда
![]() Добавлено через 2 минуты Aviz__ вот не поверишь, когда мне сказали, что по условию задачи тебе не сказано, что массив должен быть упорядочен, то значит не надо его упорядочивать - мой фейс был таким о_О Ну это просто логичная логичность 8))
0
|
|
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,780
|
|
| 01.02.2019, 16:36 | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 26.11.2018
Сообщений: 14
|
|
| 01.02.2019, 16:44 [ТС] | |
|
Да нет, это спецом тебя ставят в такие условия, чтоб ты врубил логику и проявил соображалку, как можно проще всего сделать функционал на базовых элементах языка, аля массив в нашем случаи. Просто меня смутило то, что в задании было так:
Схема хранения объектов в массиве array (в элементах от 0 до size-1 отсутствуют null): r1, r2, r3,..., rn, null, null,..., null <----- size -----> <------- storage.length (10000) -------> Вот я и решил, что они должны идти по-порядку, а в условии про порядок то ничего нет 8)
0
|
|
|
2759 / 2066 / 509
Регистрация: 17.02.2014
Сообщений: 9,492
|
|
| 01.02.2019, 17:50 | |
|
0
|
|
| 01.02.2019, 17:50 | |
|
Помогаю со студенческими работами здесь
15
Совет по чужому коду Дайте совет по данному коду Свежие головы,дайте совет по коду Совет по коду: программное создание новой базы Нужен комментарий к коду программы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html
Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
|
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
|
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях.
Задача: при копировании документа очищать определенные реквизиты и табличную. . .
|