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