Имя: Пароль:
1C
1С v8
Заполнить двухмерный массив
0 serg999
 
11.06.21
10:22
Добрый день .

Уже мозг сломал .. надо заполнить массив, есть кол.столбцов = Х и кол.строк = Y
Пример для  Х = 3, Y = 4

0 0 0
0 0 1
0 0 2
0 0 3
0 0 4
0 1 0
0 1 1
0 1 2
0 1 3
0 1 4
0 2 0
.
.
4 4 4
1 Beduin
 
11.06.21
10:23
Цикл по Х
Цикл по У
ту-ту-ту
2 mikecool
 
11.06.21
10:24
Новый масиив[Х][Y]
3 Vadim_37
 
11.06.21
10:27
Слова = Новый Массив(3, 2);

    Слова[0][0] = "Юрий";
    Слова[0][1] = "Гагарин";

    Слова[1][0] = "Герман";
    Слова[1][1] = "Титов";

    Слова[2][0] = "Валентина";
    Слова[2][1] = "Терешкова";
4 serg999
 
11.06.21
10:28
Ну это понятно .. а дальше
5 serg999
 
11.06.21
10:29
Создать я его создал, а вот заполнить ...
6 Beduin
 
11.06.21
10:30
(4)(5) Ты нас троллишь или реально пишешь?
7 serg999
 
11.06.21
10:31
Да блин реально не получается ...
8 Малыш Джон
 
11.06.21
10:32
(7) Для А = 0 По 624 Цикл
    Массив[А][0] = А%5;
    А = Цел(А/5);
    Массив[А][1] = А%5;
    А = Цел(А/5);
    Массив[А][2] = А%5;
    А = Цел(А/5);
   КонецЦикла;
9 Малыш Джон
 
11.06.21
10:33
+(8) Ну только не А в цикле делить конечно, а в какую нибудь временную копировать
10 ДенисЧ
 
11.06.21
10:35
Для сч1 = 1 по Х Цикл
   Для сч2 = 1 по У Цикл
     Й = сч1 + сч2;
     масс[Х][У] = Й;
   КонецЦикла;
КонецЦИкла
11 Малыш Джон
 
11.06.21
10:36
(10) Y - не количество строк массива
12 Малыш Джон
 
11.06.21
10:37
+(11) а , пардон, в описании именно так и написано, хотя в приведенном примере логика другая
13 SeriyP
 
11.06.21
10:46
(0) пример не соответствует описанию по количеству строк
14 SeriyP
 
11.06.21
10:48
У - это количество строк в "блоке"
15 SeriyP
 
11.06.21
10:48
1
16 serg999
 
11.06.21
10:58
Как правильно объяснить .. надо заполнить массив по всем возможным вариантам ..
Стобцов -3; Строк -4;

0 0 0
0 0 1
0 0 2
0 0 3
0 0 4 <- Тут переход на другой столбец, так как строк 4
0 1 0
0 1 1
0 1 2
0 1 3
0 1 4 <- Тут переход на другой столбец
0 2 0
0 2 1 ... ну и т.д.
.
.
4 4 4 - тут завершение ..
17 serg999
 
11.06.21
11:00
(8) сейчас пробую
18 acht
 
11.06.21
11:03
(16) Представь себе хорошо изученную последователность чисел:
000
001
002
003
004
005
006
007
008
009
010
011
012
...
098
099
100
101
102
...


Понятно, как она формируется по разрядам? =)
19 SeriyP
 
11.06.21
11:48
тут еще условие должно быть что У <= 9
20 polosov
 
11.06.21
12:21
У вас массив из какого языка программирования?
Вроде 3 на 4 = 12 элементов, а у вас тут чисел что-то у всех многовато.
21 serg999
 
11.06.21
12:23
(20) 1C ..

Мне надо перебрать все возможные варианты ..
22 acht
 
11.06.21
12:42
(20) У него "кол.строк" имеет особый смысл - это он так "основание системы счисления" называет.
23 serg999
 
11.06.21
13:24
Вот такой "крокодил" получился ..

Процедура Команда1 (Команда)
    ВсегоСтолбцов = Столбцов;
    ВсегоСтрок = Pow (Строк+1, Столбцов);
    
    знч = 0;
    м = Новый массив (ВсегоСтолбцов+1, ВсегоСтрок+1);
    
    стл = ВсегоСтолбцов;
    
    Пока стл >= 1 Цикл
        Для стр = 0 По ВсегоСтрок Цикл
            Если стл = ВсегоСтолбцов Тогда
                //Первый столбец с края
                Если знч >= Строк ИЛИ стр = 0 Тогда
                    знч = 0;
                Иначе
                    знч = знч + 1;
                КонецЕсли;
            Иначе
                сумм = 0;
                Для яч = стл+1 По ВсегоСтолбцов Цикл
                    сумм = сумм + м[яч][стр];
                КонецЦикла;
                Если стр = 0 Тогда
                    знч = 0;
                ИначеЕсли сумм = 0 Тогда            
                    знч = знч + 1;
                    Если знч > Строк Тогда
                        знч = 0;
                    КонецЕсли;
                КонецЕсли;
                
            КонецЕсли;
            
            м[стл][стр] = знч;            
            
        КонецЦикла;
        знч = 0;
        стл = стл - 1;
    КонецЦикла;
КонецПроцедуры
24 Малыш Джон
 
11.06.21
13:40
(23)  то есть вот так тебя не устроило:
Х = 3; У = 4;
МаксА = Pow(У+1,Х)-1;
Массив = Новый Массив(МаксА+1,Х);
Для А = 0 По МаксА Цикл
    temp = А;
    Массив[А][0] = temp%5;
    temp = Цел(temp/5);
    Массив[А][1] = temp%5;
    temp = Цел(temp/5);
    Массив[А][2] = temp%5;
    temp = Цел(temp/5);
КонецЦикла;
25 Малыш Джон
 
11.06.21
13:42
+(24) ну с учетом переменного Х:

МаксА = Pow(У+1,Х)-1;
Массив = Новый Массив(МаксА+1,Х);
Для А = 0 По МаксА Цикл
    temp = А;         
    Для В = 0 По Х-1 Цикл
        Массив[А][В] = temp%5;
        temp = Цел(temp/5);
    КонецЦикла;
КонецЦикла;
26 Вафель
 
11.06.21
14:00
Тут же просто 3 цикла нужно
27 serg999
 
11.06.21
14:08
(24) Ну, недопер .. (25) Малыш Джон, красиво!
28 Cthulhu
 
11.06.21
15:08
только не 5 а (Y+1) наверное...
а вообще если глянуть внмательнее - в (0) каждая строка - это +1 от предыдущей строки в (Y+1)-ричной системе счисления. от 1 до (Y+1)^X-1
29 Cthulhu
 
11.06.21
15:12
ЗЫ: 444 это 5^3-1 = 124 в 5-ричной системе счисления (4*5^2 + 4*5^1 + 4*5^0)
30 Кулибин
 
11.06.21
16:44
Думаю, что этого будет достаточно:

//Если шаблон "01", то перевод будет осуществлен в двоичную систему счисления, если "01234567", то в восьмиричную, если "0123456789ABCDEF", то в шестнадцатиричную

Функция Из_Число_В_XСчисл(Знач Значение, Шаблон)
    Результат="";
    Основание = СтрДлина(Шаблон);
    Пока Значение>0 цикл
        Остат = Значение%Основание;
        Результат1=Сред(Шаблон,Остат+1,1);
        Значение = (Значение-Остат)/Основание;
        Результат = Результат1 + Результат;
    КонецЦикла;
    Возврат Результат;
КонецФункции
31 DES
 
11.06.21
19:18
Это пятиричная система счистления.
Есть стандартная функция перевода  десятичной системы в любую по заданому основанию
потом просто заносишь разряды  в колонки до заполнения
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн