![]() |
|
Упрощение циклов | ☑ | ||
---|---|---|---|---|
0
orensymrak
05.07.12
✎
10:56
|
Процедура КнопкаВыполнитьНажатие(Кнопка)
ЭлементыФормы.Надпись1.Значение = ""; строка1 = "УКЕНХВАРООСМТYKEHXBAPOOCMT00"; // строка букв строка2 = "YKEHXBAPO0CMTУКЕНХВАРО0СМТОO"; // строка соответствия с строкой1 Символы_ = Новый Массив(4); ВременМассив = Новый Массив(4); результат = Новый массив(1); Для НомерСимвола = 0 по 3 Цикл ВременМассив[НомерСимвола] = Новый Массив(1); Символы_[НомерСимвола] = Сред(ЭлементыФормы.ПолеВвода1.Значение, НомерСимвола+1,1); // Разделяем введеный текст посимвольно Для Ф =1 По СтрДлина(строка1) Цикл // Проверяем на наличие в строка1 Символ_ = Сред(строка1,Ф,1); Если Символы_[НомерСимвола] = Символ_ Тогда ВременМассив[НомерСимвола][0]=Символы_[НомерСимвола]; //Если имеется соотвт. вносим в массив значение [0,0] -> Н ВременМассив[НомерСимвола].Добавить(сред(строка2,Ф,1)); // [0,1] -> Н* Иначе ВременМассив[НомерСимвола][0]= символы_[НомерСимвола]; КонецЕсли; КонецЦикла; КонецЦикла; Для Первый = 0 По ВременМассив[0].ВГраница() Цикл // Н -> Для Второй =0 По ВременМассив[1].ВГраница() Цикл // Н -> Для Третий=0 По ВременМассив[2].ВГраница() Цикл // О -> О* -> 0 Для Четвертый=0 По ВременМассив[3].ВГраница() Цикл ЭлементыФормы.Надпись1.Значение = ЭлементыФормы.Надпись1.Значение + ВременМассив[0][Первый] + ВременМассив[1][Второй] + ВременМассив[2][Третий] + ВременМассив[3][Четвертый]+символы.Таб; КонецЦикла; КонецЦикла; КонецЦикла; КонецЦикла; КонецПроцедуры Проблема состоит в том чтобы упростить последние 4 цикла в 2. Вообще задача такая что вводим от 2 до 4х символов и выводился результат перебора соответствия например вводим ННО(рус буквы все). быувы соответствия для введеных Н -> H*, О -> O* -> 0 и выводится результат: ННО Н*НО НН*О ННО* Н*Н*О Н*НО* Н*Н*О* НН0 Н*Н0 НН*0 Н*Н*0 |
|||
1
Mort
05.07.12
✎
11:07
|
Есть подозрение, задача распознания похожих символов решается через заднее место.
|
|||
2
Один С
05.07.12
✎
11:08
|
все не читал. А так нельзя разве?
СтрЗаменить("Н", "Н*"); СтрЗаменить("О", "0"); |
|||
3
kosts
05.07.12
✎
11:14
|
а звездочка зачем?
|
|||
4
orensymrak
05.07.12
✎
15:29
|
Звездочка для примера что это англ буква
|
|||
5
Ненавижу 1С
гуру
05.07.12
✎
15:34
|
рекурсией сделай
|
|||
6
Лефмихалыч
05.07.12
✎
15:39
|
regular expressions!
|
|||
7
Лефмихалыч
05.07.12
✎
15:42
|
(0) задача не понятна. Ты сам-то понимаешь, что в результате получить надо?
|
|||
8
orensymrak
05.07.12
✎
15:47
|
Задачу я выше описал, и вполне понятна, она вообще типа теста, вводим любые символы и алгоритм должен вывести все варианты перебора с рус и англ символами как показано выше на примере с ННО
|
|||
9
palpetrovich
05.07.12
✎
15:55
|
(8) нифига не понятно ... результат перебора чего? перебирать можно законченный массив букв, почему * может размножаться?
|
|||
10
orensymrak
05.07.12
✎
17:51
|
* тут чисто для пояснения что это англ буква, перебор соответствий для У -> Y и т.д. если уже и ввели УУ то результат должен получиться
УУ YУ УY YY и уже если не понятно то по коду проверить это можно и все понятно было бы |
|||
11
asady
05.07.12
✎
18:43
|
(0) ВЫБРАТЬ
Т1.Знач КАК Т1, Т2.Знач КАК Т2 ИЗ Т1 КАК Т1 ПОЛНОЕ СОЕДИНЕНИЕ Т1 КАК Т2 По ИСТИНА как-то так для двух |
|||
12
Один С
05.07.12
✎
20:49
|
Символы_
Символ_ НомерСимвола От этих символов в глазах рябит. Нихрена не понятно чо автор хочет. Толи я тупой, толи одно из двух. Если нужно строку перевести в другую раскладку согласно двум строкам соответствия, то почему бы просто не найти положение символа в строке1 и считать символ который в том же положении в строке2? К чему эти переборы по 18 раз? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |