|
Работа с массивом | ☑ | ||
---|---|---|---|---|
0
pilot_iv
30.11.12
✎
10:26
|
есть массив размером 1000 эл...
нужно разбить его на ряд массивов по критерию (50 элементов) как это сделать правильно ...т.е имеется массив неограниченного размера, процедура разбивает его на ряд массивов фиксированного размера |
|||
1
cw014
30.11.12
✎
10:26
|
Перебором
|
|||
2
pilot_iv
30.11.12
✎
10:29
|
не понятно
допустим нужно ограничивать размер 50 элементов может кто такую функцию где видел |
|||
3
Cube
30.11.12
✎
10:32
|
(2) Что не понятного? Делаешь цикл, считаешь строки, где надо выходишь...
|
|||
4
cw014
30.11.12
✎
10:34
|
(2) Не видели. Но если напишешь - увидим
|
|||
5
pilot_iv
30.11.12
✎
11:26
|
честно говоря не могу определить подход к решению
у меня допустим 1020 эл тогда получаем мне нужно 40 циклов и сорок массивов...как это сделать в одном цикле и видимо используя один массив (потом его передавать в функцию и очищать) я не могу собразить |
|||
6
Cube
30.11.12
✎
11:28
|
(5) Так а ты задачу опиши конкретнее и код, который уже есть, давай сюда.
|
|||
7
salvator
30.11.12
✎
11:29
|
(5) Логика отсутствует напрочь?
|
|||
8
pilot_iv
30.11.12
✎
11:31
|
//// делаяю вычисления, в результате получаю МассивЭлементов
/// произвольного размера // далее МассивЭлементов передается в качестве параметра в функцию, но она отрабатывает на массиве размером не более 50 элементов // соответсвенно исходный массив надо разбивать на подмассивы фиксированного размера и их передавать в функцию на исполнение. |
|||
9
pilot_iv
30.11.12
✎
11:33
|
размер исходного массива - больше 50
|
|||
10
Галахад
гуру
30.11.12
✎
11:34
|
(8) Это чрезвычайно сложная задача. Не решаемая практически....
|
|||
11
Cube
30.11.12
✎
11:34
|
(8) У тебя это автоподбор в поле ввода на форме что ли?
|
|||
12
Deon
30.11.12
✎
11:35
|
(8) Так сделай 1 цикл по всему массиву, где собирай массивчик из 50 записей, и когда его наберешь, передавай в функцию. В чем проблема-то?
|
|||
13
Chikko
30.11.12
✎
11:35
|
Передавать в функцию по 50?
|
|||
14
pilot_iv
30.11.12
✎
11:36
|
(13) да по условию 50 элементов ..не могу сообразить как это сделать
|
|||
15
Chikko
30.11.12
✎
11:38
|
Предполагаю так: перебираешь массив, собрал 50 штук-вызвал функцию, ф-ция отработала-вернулся в перебор.
|
|||
16
Deon
30.11.12
✎
11:38
|
Вот я тоже не могу понять, в чём затык-то?
|
|||
17
salvator
30.11.12
✎
11:38
|
Как вариант - удалять записи из массива.
|
|||
18
salvator
30.11.12
✎
11:39
|
Но лучше конечно перебором наполнять новый массив.
|
|||
19
pilot_iv
30.11.12
✎
11:42
|
как это выразить в коде не могу сообразить
|
|||
20
sidalexsandr
30.11.12
✎
11:43
|
Если есть в 1с 2-х мерный массиво, то его используй. Иначе два Массвива создай. В первый массив заноси ссылку на очередной созданный массив.
|
|||
21
Азазелло
30.11.12
✎
11:51
|
(19) а словами выразить можешь? алгоритм вообще себе представляешь?
|
|||
22
Steini
30.11.12
✎
11:55
|
МаленькийМассив = Новый Массив;
Для Каждого элмнт Из БольшойМассив Цикл МаленькийМассив.Добавить(элмнт); Если МаленькийМассив.Количество() = 50 Тогда ФункцияНа50(МаленькийМассив); МаленькийМассив.Очистить(); КонецЕсли; КонецЦикла; Если МаленькийМассив.Количество() > 0 Тогда ФункцияНа50(МаленькийМассив); КонецЕсли; |
|||
23
pilot_iv
30.11.12
✎
11:55
|
Для Сч = 0 по МассивЭлементов.ВГраница() Цикл
Пока сч<=50 Цикл МассивТ.Добавить(сч); КонецЦикла; ТЗ = Функ(МасивТ); // потом както надо массивТ очистить и заполнить //новыми значениями из МассивЭлементов КонецЦикла; |
|||
24
Steini
30.11.12
✎
12:08
|
И где спасибо? =)
|
|||
25
pilot_iv
30.11.12
✎
12:09
|
(24) огромное человеческое спасибо!!!
|
|||
26
pilot_iv
30.11.12
✎
12:09
|
все классно сработало
|
|||
27
Reset
30.11.12
✎
12:12
|
Будет забавно, если ФункцияНа50 внутри выглят так:
Для й=1 по 50 Цикл И вот для нее сделали обертку в (22) ;) |
|||
28
SanGvin
30.11.12
✎
12:17
|
МассивМассивов = Новый Массив;
ТекИд = -1; Для Ид=0 по БольшойМассивРазмерХз.Количество()-1 Цикл Если Ид % 50 = 0 Тогда МассивМассивов.Добавить(Новый Массив); ТекИд = ТекИд +1; КонецЕсли; МассивМассивов[ТекИд].Добавить(БольшойМассивРазмерХз[Ид]); КонецЦикла; |
|||
29
xXeNoNx
30.11.12
✎
12:43
|
МассивМаленькихМассивов = новый Массив();
МаленькийМассив = новый Массив(); Для каждого строкаМассива Из ОхрененныйМассив Цикл Если МаленькийМассив.Количество() = 50 Тогда МассивМаленкихМассивов.Добавить(МаленькийМассив); МаленькийМассив = МаленькийМассив.Очистить(); КонецЕсли; МаленькийМассив.Добавить(строкаМассива); КонецЦикла; |
|||
30
Reset
30.11.12
✎
12:44
|
(29) Нерабочий код
|
|||
31
xXeNoNx
30.11.12
✎
12:45
|
(30) нет конеш, но мысль правильная)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |