|
Помогите с составлением кода | ☑ | ||
---|---|---|---|---|
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) а пробелы и символы считаем ?
А сам как думаешь? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |