|
Как удалить элемент массива? | ☑ | ||
---|---|---|---|---|
0
Нач программист
22.08.16
✎
14:39
|
Удалить из массива:
а) все отрицательные элементы; б) все элементы, большие данного числа n; в) все элементы, начиная с n1-го по n2-й (n1 n2). код: Строка=""; Строка1=""; к=0; МассивН=Новый Массив(20); Для Счетчик=0 По 19 Цикл ГСЧ=Новый ГенераторСлучайныхЧисел(Счетчик); СлучайноеЧисло=ГСЧ.СлучайноеЧисло(0,20); Если СлучайноеЧисло%2=0 Тогда А=СлучайноеЧисло*1; ИначеЕсли СлучайноеЧисло%2=1 Тогда А=случайноеЧисло*(-1); КонецЕсли; МассивН[Счетчик]=А; Строка=Строка+МассивН[Счетчик]+" "; КонецЦикла; Сообщить("МассивН: "+Строка); |
|||
1
Зая Бусечка
22.08.16
✎
14:40
|
Проще создать новый массив и копировать туда элементы, не попадающие под эти условия
|
|||
2
butterbean
22.08.16
✎
14:42
|
(1) это похоже на тестовое задание, так что такое решение вряд-ли прокатит
|
|||
3
Горогуля
22.08.16
✎
14:43
|
с прошлой ветки не дошло?
|
|||
4
Fish
22.08.16
✎
14:43
|
(0) А что не получается то? Или просишь, чтобы за тебя задание решили?
|
|||
5
Зая Бусечка
22.08.16
✎
14:44
|
(2) Не тестовое, а экзамен по нформатике за 9й класс
|
|||
6
Горогуля
22.08.16
✎
14:45
|
август месяц. это вступительный экзамен в 9й класс
|
|||
7
Garykom
гуру
22.08.16
✎
14:46
|
Тока мне непонятно что подразумевается под удалением из массива фикси размерности?
|
|||
8
Нач программист
22.08.16
✎
14:47
|
(4) Я что написал решить за меня.
|
|||
9
Горогуля
22.08.16
✎
14:48
|
ты написал решить за тебя это
|
|||
10
Ёпрст
22.08.16
✎
14:48
|
(0) И ?
Перебирай массив с конца , ставь условие и удаляй. Делов-то |
|||
11
Горогуля
22.08.16
✎
14:49
|
(10) мы уже пробовали, не помогает
|
|||
12
Ёпрст
22.08.16
✎
14:50
|
Если что, дарю (и не благодари):
Массив (Array) Удалить (Delete) Синтаксис: Удалить(<Индекс>) Параметры: <Индекс> (обязательный) Тип: Число. Индекс удаляемого элемента. Описание: Удаляет значение из массива по указанному индексу. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер). Примечание: Если указанный в параметре индекс больше, чем ВГраница, то никаких действий не производится и не выдается сообщение "Индекс находится за границами массива". Пример: Массив.Удалить(4); |
|||
13
Горогуля
22.08.16
✎
14:51
|
>Если указанный в параметре индекс больше,
а если меньше, чем НГраница? косяк в СП? |
|||
14
Garykom
гуру
22.08.16
✎
14:52
|
(12) В 1С массивы "неправильные" ))
|
|||
15
Мыш
22.08.16
✎
14:52
|
Для Счетчик=1-Массив.Количество() По 0 Цикл
// Задача А Если Массив[-Счетчик]<0 Тогда Массив.Удалить(-Счетчик); КонецЕсли; // Задача Б Если Массив[-Счетчик]>ЧислоЭн Тогда Массив.Удалить(-Счетчик); КонецЕсли; КонецЦикла; // Задача В Для Счетчик=1-Массив.Количество()+Эн2 По Эн1 Цикл Массив.Удалить(-Счетчик); КонецЦикла; // Начинай благодарить |
|||
16
Нач программист
23.08.16
✎
08:37
|
Все решил!
Строка=""; Строка1=""; к=0; МассивН=Новый Массив(20); Для Счетчик=0 По 19 Цикл ГСЧ=Новый ГенераторСлучайныхЧисел(Счетчик); СлучайноеЧисло=ГСЧ.СлучайноеЧисло(0,20); Если СлучайноеЧисло%2=0 Тогда А=СлучайноеЧисло*1; ИначеЕсли СлучайноеЧисло%2=1 Тогда А=случайноеЧисло*(-1); КонецЕсли; МассивН[Счетчик]=А; Строка=Строка+МассивН[Счетчик]+" "; КонецЦикла; Сообщить("МассивН: "+Строка); МассивКУдалению = Новый Массив(); Для Каждого эл из МассивН Цикл Если эл<0 Тогда МассивКУдалению.Добавить(Эл); Сообщить(эл); КонецЕсли; КонецЦикла; Для Каждого эл из МассивКУдалению Цикл МассивН.Удалить(МассивН.Найти(эл)); КонецЦикла; Сообщить("Количество массива после удаления: "+МассивН.Количество()); |
|||
17
Йохохо
23.08.16
✎
08:46
|
(16) это тянет максимум на троечку или даже меньше, т.к. видно, что нет понимания работы с массивом и алгоритмически ужасно
|
|||
18
Горогуля
23.08.16
✎
09:19
|
(16) а зачем тебе 20 ГСЧ? а почему именно до 19, а не до Н? а зачем второй массив? а кто придумал называть переменные ключевыми словами? а зачем лишние переменные? а тебе хватит на жизнь одной коленки?
|
|||
19
michael512
24.08.16
✎
03:33
|
(15) // Задача В решена неправильно, удаляется то что вне диапазона n1 : n2
Для Счетчик=1-Массив.Количество()+Эн2 По Эн1 Цикл Массив.Удалить(-Счетчик); КонецЦикла; // правильное решение задачи В Для Счетчик = -Эн2 По -Эн1 Цикл Массив.Удалить(-Счетчик); КонецЦикла; |
|||
20
michael512
24.08.16
✎
03:39
|
(14) ага, в 1С одномерные массивы это связанные списки объектов, эмулирующие массив, а многомерные массивы - деревья
|
|||
21
Jija Grenkov
24.08.16
✎
05:07
|
(20) даже никогда не думал, что массив это список и до сих пор сомнения есть. Получается сложность доступа к значению по индексу O(n)? Я бы скорее поверил что это хешированная коллекция (Map)
|
|||
22
DrZombi
гуру
24.08.16
✎
07:50
|
(16) Еще подумай. Алгоритм бредовый и не рабочий :)
|
|||
23
DrZombi
гуру
24.08.16
✎
07:50
|
(18) Ты еще до этого Эпика не дошел :)
Для Каждого эл из МассивКУдалению Цикл МассивН.Удалить(МассивН.Найти(эл)); КонецЦикла; |
|||
24
Горогуля
24.08.16
✎
08:01
|
(23) валерьянка закончиолась как раз перед этим
|
|||
25
michael512
24.08.16
✎
08:21
|
(21) Возможно, имхо это ArrayList
|
|||
26
michael512
24.08.16
✎
08:28
|
// код
Для Каждого эл из МассивКУдалению Цикл МассивН.Удалить(МассивН.Найти(эл)); КонецЦикла; а это точно работает? пойду попробую, думаю, всё таки, пространственно-временной континуум не свернется в точку... |
|||
27
Jija Grenkov
24.08.16
✎
09:57
|
(25) Так ArrayList -- это обертка над "честным" массивом, тогда почему в 1с массивы не правильные?
|
|||
28
michael512
24.08.16
✎
10:47
|
(27) В каком месте "неправильные"?
|
|||
29
Jija Grenkov
24.08.16
✎
10:49
|
Мне вот не ясно в каком месте они не правильные. Это я взял из вашего обсуждения которое началось с (14) И вы его поддержали в (20)
|
|||
30
michael512
24.08.16
✎
10:55
|
видимо, имелось в виду, что массивы в 1С - это коллекции нетипизированных данных, в то же время "правильные" массивы типизированные списки данных, т.е. каждый представитель списка одинакового типа во всем теле массива
|
|||
31
michael512
24.08.16
✎
10:57
|
аналог хэшированной коллекции в 1с - структура
|
|||
32
michael512
24.08.16
✎
11:00
|
в общем случае 1с массив можно представить как массив указателей
|
|||
33
Jija Grenkov
24.08.16
✎
11:12
|
(30)(32) Такие не честные массивы во многих языках. Там лежат ссылки/указатели которые одинакового размера, а куда они указывают уже другой вопрос. В java тоже так, за исключением массивов примитивных типов. В js массивы на хэш таблице построены.
|
|||
34
Chum
24.08.16
✎
11:16
|
У меня вопрос по тексту задания:
>Удалить из массива: >а) все отрицательные элементы; >б) все элементы, большие данного числа n; >в) все элементы, начиная с n1-го по n2-й (n1 n2). Пункт "в" должен выполняться после выполнения пунктов "а" и "б" или до? |
|||
35
Горогуля
24.08.16
✎
11:22
|
(34) на усмотрение главбуха
|
|||
36
Jija Grenkov
24.08.16
✎
11:28
|
(34) это же тестовое задание, какая разница как делать. Главное описать, что принял решение делать в такой-то последовательности, сложность от этого не меняется
|
|||
37
Chum
24.08.16
✎
17:54
|
(36) садись, два!
Ничего, что условие "В", если оно будет выполняться после "а" и(или) "б" запросто может не сработать, т.к. вполне возможен случай, что n1 и(или) n2 превысят границы результирующего массива, полученного после выполнения "а" и "б"? p.s. Жижа Гренков? Жижа? |
|||
38
michael512
24.08.16
✎
20:09
|
(37) в виду того, что n1 и n2 не конкретизированы, вполне допустимо, что решение просто должно предоставлять функцию удаления указанного диапазона, ведь, на худой конец, можно ввести проверку выхода за границы массива
|
|||
39
Jija Grenkov
24.08.16
✎
21:23
|
(37) я думаю выбрать такой вариант и корректно обработать исключение будет показателем хорошего стиля кодинга.
|
|||
40
michael512
25.08.16
✎
02:24
|
(39) хороший стиль, это когда и переменные проверяются и ошибки отлавливаются (для особо упорных|упоротых)
|
|||
41
michael512
25.08.16
✎
02:37
|
Проверка ставится там, где ошибки прогнозируемы и их набор имеет конечное количество (ошибки юзверя), а ловушки ошибок там, где они могут возникнуть неожиданно для программиста, например при вызове библиотечных/системных функций, или там, где функция работает так, что может/должен возбуждать исключение
|
|||
42
Jija Grenkov
25.08.16
✎
02:52
|
(41) с этим полностью согласен. Все что может провериться явно должно проверяться явно, если такой возможности нет, можно перехватывать исключения
|
|||
43
Михаил 1С
25.08.16
✎
04:56
|
(0) Я просмотрел бегло код и не понял его связи с постановкой задачи. Там нет ни одного удаления. Там нет числа n и прочего.
... Блин, все-таки вчитался в код, как дурак. Там заполнение массива значениями и всякая ерунда. Зачем нам этот кусок кода?? Ты зачем нас зря напрягал? Справедливый вопрос - ты хочешь, чтобы мы решили за тебя? Если нет, то почему нет точных вопросов? Что тебе именно не понятно? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |