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

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

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

Отложите лупу. Пересчитайте костяшки на счетах. Запишите результаты пером, макая его в чернила.
6 Asmody
 
16.11.20
08:02
(0) это куда на собеседовании такие задачки дают?
7 hhhh
 
16.11.20
08:22
(3) учтено всё
8 Ненавижу 1С
 
гуру
16.11.20
08:26
(0) а другие виды букв? например, грузинские?
9 Mikeware
 
16.11.20
08:35
(8) "буквы бывают прописные, строчные, и грузинские."©
10 SleepyHead
 
гуру
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!
(Аплодисменты в зале)
Выступает грузин:
ჩვენ გამოგონილი გვაქვს აბები, რომლებიც პენისს ნესვს ჰგავს !
-?! Вопрос из зала: - В длину или в ширину?
- პირველ რიგში, გემოვნებას ვგულისხმობთ
11 RomanYS
 
16.11.20
09:44
(3)
>> не учтено   "русские и латанские"
Да, этот код любые съест, не только указанные. Отчасти согласен.

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


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

Если Симв <> ВРег(Симв) Тогда
   НР = НР + 1;
ИначеЕсли Симв <> НРег(Симв) Тогда
   ВР = ВР + 1;
КонецЕсли;

Такой вариант думаю ни у кого вопросов вызывать не должен, (2) накидывал специально чтобы реакцию на Число+Булево увидеть
24 vi0
 
16.11.20
13:05
(21) конечно, анекдот про это
25 Mikeware
 
16.11.20
13:57
(24) грузины в анекдотах обычно подходят с другой стороны...
26 vi0
 
16.11.20
14:33
(25) с философской?
27 Irbis
 
16.11.20
14:39
"АБВГ...ABCD..." и "абвг...abcd..." и обычная проверка на вхождение очередного символа в эталонную строку
28 vi0
 
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();
29 vi0
 
16.11.20
17:04
так нужно:
"[а-яёa-z]"
"[А-ЯЁA-Z]"
30 ChiginAV
 
17.11.20
06:37
(10) Американец бы сказал "3.9 inch"
31 lEvGl
 
гуру
17.11.20
09:09
что такое Лорень? или это жопень должна быть
32 Tarlich
 
17.11.20
10:04
я бы еще упростил .... т.к

НР+ВР = СтрДлина(Реквизит) -))

а пробелы и символы считаем ?
33 RomanYS
 
17.11.20
10:08
(32) а пробелы и символы считаем ?
А сам как думаешь?
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс