Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Помогите с составлением кода

Помогите с составлением кода
Я
   Jlopenb
 
16.11.20 - 01:11
Посчитать количество строчных (маленьких) и прописных (больших) букв в введенной строке. Учитывать английские и русские буквы.
   Klesk
 
1 - 16.11.20 - 01:15
для сред КодСимвола<= КодСимвола>=
   RomanYS
 
2 - 16.11.20 - 01:19
накину) и пойду спать

    НР = 0;
    ВР = 0;
    Для инд = 1 По СтрДлина(Реквизит1) Цикл
        Симв = Сред(Реквизит1, инд, 1);
        НР = НР + (Симв = НРег(Симв) и Симв <> ВРег(Симв));
        ВР = ВР + (Симв <> НРег(Симв) и Симв = ВРег(Симв));
    КонецЦикла;
   МихаилМ
 
3 - 16.11.20 - 02:01
(2)
не учтено   "русские и латанские"
алгоритмический кретинизм. двойка.
   vi0
 
4 - 16.11.20 - 06:33
попробовать регулярками, например [а-яёa-z] без учета регистра
   SleepyHead
 
5 - 16.11.20 - 07:37
(0) Вам понадобятся - лупа с трехкратным увеличением, счеты, гусиное перо и чернила, а также линейка. Поместите линейку перпендикулярно введенной строке так, чтобы слева от линейки был виден один символ. Если символ строчный, отложите на счетах одну костяшку в нижнем ряду, а если прописной, то одну в верхнем. Переместите линейку вправо, повторите операцию анализа символа, оставшегося слева от линейки. Если символ виден плохо, используйте лупу.

Повторять до тех пор, пока не передвинете линейку в конец строки.

Отложите лупу. Пересчитайте костяшки на счетах. Запишите результаты пером, макая его в чернила.
   Asmody
 
6 - 16.11.20 - 08:02
(0) это куда на собеседовании такие задачки дают?
   hhhh
 
7 - 16.11.20 - 08:22
(3) учтено всё
   Ненавижу 1С
 
8 - 16.11.20 - 08:26
(0) а другие виды букв? например, грузинские?
   Mikeware
 
9 - 16.11.20 - 08:35
(8) "буквы бывают прописные, строчные, и грузинские."©
   SleepyHead
 
10 - 16.11.20 - 09:03
(9) Анекдот в тему

Идет международный конгресс сексологов. Выступает американец:
- In our laboratory, a powder has been made that allows you to increase the penis by 10 cm!
(Аплодисменты в зале.)
Выступает француз:
- Dans notre laboratoire, nous avons créé un mélange qui augmente le pénis de 15 cm!
(Аплодисменты в зале)
Выступает грузин:
ჩვენ გამოგონილი გვაქვს აბები, რომლებიც პენისს ნესვს ჰგავს !
-?! Вопрос из зала: - В длину или в ширину?
- პირველ რიგში, გემოვნებას ვგულისხმობთ
   RomanYS
 
11 - 16.11.20 - 09:44
(3)
>> не учтено   "русские и латанские"
Да, этот код любые съест, не только указанные. Отчасти согласен.

>> алгоритмический кретинизм
Это медицинский диагноз или ты не врач :)? Что не так?
"Накину" не просто так писал. Хочется узнать мнение сообщества к использованию неявного преобразования типов, в т.ч. такому.


(2) наверное можно упростить
НР = НР + (Симв <> ВРег(Симв));
ВР = ВР + (Симв <> НРег(Симв));
   acht
 
12 - 16.11.20 - 09:55
(11) > мнение сообщества к использованию неявного преобразования типов, в т.ч. такому.
А еще надо написать все в одну строку, потому что так быстрее работает.
   Mafiozaa
 
13 - 16.11.20 - 09:59
(10) Красавчик, орал))
   Ненавижу 1С
 
14 - 16.11.20 - 10:03
(9) ну не во всех письменностях есть разделение на прописные и строчные
   ИУБиПовиц
 
15 - 16.11.20 - 10:05
(11) У вас НР завышены как мин. Врег(" ") <> " " :)
   RomanYS
 
16 - 16.11.20 - 10:07
(12) Не не, символ вычислен отдельно. С этой стороны вроде не докопаешься: одно действие - одна строка.
(15) У тебя какая версия 1С? В моей пробел во всех регистрах одинаков :)
   Василий Алибабаевич
 
17 - 16.11.20 - 10:14
Код в (2) страдает избыточностью. Достаточно посчитать в один проход количество букв одного типа. Количество второго вычисляется вычитанием количеством первого из общего.
И еще - непонятно нужно ли делать проверку на то что символ это буква?
   RomanYS
 
18 - 16.11.20 - 10:17
Могут быть ещё пробелы, цифры, знаки препинания...
   Василий Алибабаевич
 
19 - 16.11.20 - 10:18
+ (17) И проверку достаточно делать один раз. Если оно нижнего регистра то уж точно не верхнего
НР = НР + (Симв = НРег(Симв));
   RomanYS
 
20 - 16.11.20 - 10:20
(19) только наоборот, смотри (11)
" " == НРег(" ") == ВРег(" ")//это не код, а утверждение))
   Mikeware
 
21 - 16.11.20 - 10:33
(13) я даже боюсь спросить... точно "орал"?
   Kassern
 
22 - 16.11.20 - 10:46
(20) ага, поэтому нужно просто условие сделать в цикле и пропускать лишние символы, которые к буквам не относятся.
КолСимволовНРег=0;
КолСимволовВРег=0;
Для к=1 По СтрДлина(ТекСтрока) Цикл
    ТекСимвол=Сред(ТекСтрока,к,1);
    Если ВРег(ТекСимвол)<>НРег(ТекСимвол) Тогда 
        КолСимволовНРег=КолСимволовНРег+(ТекСимвол=НРег(ТекСимвол));
        КолСимволовВРег=КолСимволовВРег+(ТекСимвол=ВРег(ТекСимвол));
    КонецЕсли;
КонецЦикла;
   RomanYS
 
23 - 16.11.20 - 11:15
(22) Если уж мы "если" используем смысл в таких конструкциях (с неявным приведением булево) теряется
Если Симв <> ВРег(Симв) Тогда
   НР = НР + 1;
ИначеЕсли Симв <> НРег(Симв) Тогда
   ВР = ВР + 1;
КонецЕсли;

Такой вариант думаю ни у кого вопросов вызывать не должен, (2) накидывал специально чтобы реакцию на Число+Булево увидеть
   vi0
 
24 - 16.11.20 - 13:05
(21) конечно, анекдот про это
   Mikeware
 
25 - 16.11.20 - 13:57
(24) грузины в анекдотах обычно подходят с другой стороны...
   vi0
 
26 - 16.11.20 - 14:33
(25) с философской?
   Irbis
 
27 - 16.11.20 - 14:39
"АБВГ...ABCD..." и "абвг...abcd..." и обычная проверка на вхождение очередного символа в эталонную строку
   vi0
 
28 - 16.11.20 - 16:35
Reg = Новый COMОбъект("VBScript.RegExp");
Reg.IgnoreCase = Ложь;
Reg.Global = Истина;
Текст = "Текст";

Reg.Pattern = "[а-яёa-z]+?";
НР = Reg.Execute(Текст).Count();

Reg.Pattern = "[А-ЯЁA-Z]+?";
ВР = Reg.Execute(Текст).Count();
   vi0
 
29 - 16.11.20 - 17:04
так нужно:
"[а-яёa-z]"
"[А-ЯЁA-Z]"
   ChiginAV
 
30 - 17.11.20 - 06:37
(10) Американец бы сказал "3.9 inch"
 
 Рекламное место пустует
   lEvGl
 
31 - 17.11.20 - 09:09
что такое Лорень? или это жопень должна быть
   Tarlich
 
32 - 17.11.20 - 10:04
я бы еще упростил .... т.к
 НР+ВР = СтрДлина(Реквизит) -))

а пробелы и символы считаем ?
   RomanYS
 
33 - 17.11.20 - 10:08
(32) а пробелы и символы считаем ?
А сам как думаешь?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.