Имя: Пароль:
1C
 
как применить метод пузырька в 1с
,
0 СлоникЗеленый
 
06.10.23
10:52
у  меня задача создать форму .
1. вывести кнопку в командной панели
2. под кнопкой 2 строки
3. в первую строку ввести числа не по порядку
4. нажать кнопку
5. и во второй строке числа должны встать по порядку
6. нужно включить маску что бы можно было вводить только числа.
7. применить метод Пузырька
я новичок не могу сообразить как сделать что бы все работало
Что я сделал из списка
Создал форму, вывел кнопку и 2 строки  

помогите пожалуйста ребят )
1 Волшебник
 
06.10.23
10:53
не используйте метод Пузырька
2 СлоникЗеленый
 
06.10.23
11:05
одно из условий этот метод.(((
3 Волшебник
 
06.10.23
11:06
(2) Мы отвергаем Ваши условия
4 majkk
 
06.10.23
11:08
(0) Да запросто. Что такое метод "пузырька"?
5 Гена
 
гуру
06.10.23
11:08
(1) А почему? В том же экселе нормально работает такая сортировка.
6 Гена
 
гуру
06.10.23
11:09
(4) маленькие (лёгкие) вверху, большие (тяжёлые) внизу. Как в "кровавой Мэри".
7 boozin
 
06.10.23
11:09
(5) Потому что в 1С полно возможностей делать подобные вещи без извращений... :)
8 majkk
 
06.10.23
11:10
(6) Ну ты даешь! Думаешь, я не знаю?
9 Волшебник
 
06.10.23
11:11
(5) в 1С есть нормальные методы сортировки. Метод пузырька придуман для того, чтобы показать студентам, как сортировать НЕ НАДО. Это самый медленный сортировки
wiki:Сортировка_пузырьком

Алгоритм считается учебным и практически не применяется вне учебной литературы, вместо него на практике применяются более эффективные алгоритмы сортировки.
10 Гена
 
гуру
06.10.23
11:12
(9) Ясно. Тормоз. Спасибо.
в смысле - сортировка тормоз, не я )
11 Stepashkin
 
06.10.23
11:18
(0)

Функция СортировкаПузырьком(Знач Массив)
	
	Для i = 0 По Массив.ВГраница() Цикл
		Для j = 0 ПО Массив.Вграница() - i - 1 Цикл
			Если Массив[j] > Массив[j + 1] Тогда
				Замена = Массив[j];
				Массив[j] = Массив[j + 1];
				Массив[j + 1] = Замена;
			КонецЕсли;			
		КонецЦикла;		
	КонецЦикла;	
	Возврат Массив;	
КонецФункции
12 Stepashkin
 
06.10.23
11:18
(0) А вообще лучше использовать стандартные механизмы платформы
13 Stepashkin
 
06.10.23
11:20
(0) Функция СортировкаСпискомЗначений(Знач Массив)
    
        СпЗнч = Новый СписокЗначений;
        СпЗнч.ЗагрузитьЗначения(Массив);
    СпЗнч.СортироватьПоЗначению(НаправлениеСортировки.Возр);    
    Возврат СпЗнч.ВыгрузитьЗначения();
КонецФункции
14 Волшебник
 
06.10.23
11:20
(11) Не стоит думать, что Знач поможет. Исходный массив будет испорчен (отсортирован)
15 Волшебник
 
06.10.23
11:20
(13) Здесь Знач лишнее, но по крайней мере исходный массив не портится.
16 Stepashkin
 
06.10.23
11:23
(15) согласен
17 СлоникЗеленый
 
06.10.23
11:37
скажите
я создаю 2 процедуры в модуле
в первую нужно написать команду? (а какую команду не пойму???)
что бы она вызывала метод Пузырька
а во вторую
сам метод Пузырьком ?
18 АгентБезопасной Нацио
 
06.10.23
11:40
(4)
"Когда клеишь обои - главное, чтоб не было пузырей... А то мы как-то собрались с Васькой клеить обои, и взяли два пузыря..."©
19 Волшебник
 
06.10.23
11:42
(17) Функцию для пузырька привели выше.
20 Stepashkin
 
06.10.23
11:57
(18) ВеселаяИстория()
21 Волшебник
 
06.10.23
11:58
22 АгентБезопасной Нацио
 
06.10.23
12:04
(21) тут свои "светы" были... "Таня-две полоски", например,  да и прочие аналогичные.. Эх, были времена...
23 Irbis
 
06.10.23
12:06
(18) Ещё нужен шприц, чтобы удалить все пузыри после использования основных пузырей.
24 Stepashkin
 
06.10.23
12:16
(17) А зачем оно вам вообще? Учитесь?
25 Stepashkin
 
06.10.23
12:20
(21) Жаль, что я выпал в то время из жизни на 18 лет
26 Волшебник
 
06.10.23
12:26
(25) Кома?
27 Stepashkin
 
06.10.23
12:31
(26) хуже. ВС РФ
28 Злопчинский
 
06.10.23
12:40
(18) Первая статья конституции Молдавии: "Обои клеить без пузырей!"
29 СлоникЗеленый
 
06.10.23
13:06
&НаКлиенте
Процедура ЧислоПоПорядку(Команда)

      ??????

КонецПроцедуры

Функция    СортировкаСпискомЗначений(Знач Массив)  
    
     СпЗнч = Новый СписокЗначений;
     СпЗнч.ЗагрузитьЗначения(Массив);
     СпЗнч.СортироватьПоЗначению(НаправлениеСортировки.Возр);    
     Возврат СпЗнч.ВыгрузитьЗначения();
    
КонецФункции

Функция СортировкаПузырьком(Знач Массив)
    
    Для i = 0 По Массив.ВГраница() Цикл
        Для j = 0 ПО Массив.Вграница() - i - 1 Цикл
            Если Массив[j] > Массив[j + 1] Тогда
                Замена = Массив[j];
                Массив[j] = Массив[j + 1];
                Массив[j + 1] = Замена;
            КонецЕсли;            
        КонецЦикла;        
    КонецЦикла;    
    Возврат Массив;    
    
КонецФункции




что нужно прописать ,что бы сработала кнопка? ребят
30 Волшебник
 
06.10.23
13:09
(29)
Напишите так:

Процедура ЧислоПоПорядку(Команда)

      МассивИсходный = Новый Массив;
      МассивИсходный.Добавить(3);
      МассивИсходный.Добавить(2);
      МассивИсходный.Добавить(1);

      МассивОтсортированный = СортировкаПузырьком(МассивИсходный);

      Для Каждого а ИЗ МассивОтсортированный Цикл
           Сообщить(а);
      КонецЦикла;     

КонецПроцедуры
31 Stepashkin
 
06.10.23
13:13
(29) В параметрах функций уберите Знач. Говорилось выше.
32 Злопчинский
 
06.10.23
13:14
можно еще напрячь препода (пятерка обеспечена будет!), произведя перестановку двух элементов без использования промежуточного буфера-переменной
33 Donkey_hot
 
06.10.23
13:15
(29) Что-нибудь типа:

МассивДляСортировки = Новый Массив;
Для Каждого Подстрока из СтрРазделить(ИсходнаяСтрока, " ") Цикл
    МассивДляСортировки.Добавить(Число(Подстрока));
КонецЦикла;

ОтсортированныйМассив = СортировкаПузырьком(МассивДляСортировки);
СтрокаРезультат = СтрСоединить(ОтсортированныйМассив, " ");

//где ИсходнаяСтрока и СтрокаРезультат - имена строковых реквизитов на форме
34 Волшебник
 
06.10.23
13:16
(32) Это только для чисел сработает. В 1С нет конструкций типа:
[a, b] = [b, a]
35 Donkey_hot
 
06.10.23
13:17
(29) Функцию СортировкаСпискомЗначений можно грохнуть, а вот для СортировкиПузырьком желательно указать все-таки в явном виде директиву компиляции (и лучше наверное &НаСервереБезКонтекста, т.к. массив может быть достаточно большим)
36 Donkey_hot
 
06.10.23
13:18
(34) Так вроде про чиселки и речь...