|
Необходмо вывести введенную пользователем строку наоборот 🠗 (Волшебник 16.11.2019 00:27) | ☑ | ||
---|---|---|---|---|
0
Tolh
08.11.19
✎
20:55
|
Здравствуйте уважаемые гуру! Я совсем новичок в 1с программировании , подскажите где я накосячил а то результат совсем не тот что нужен , последней буквы вообще нет а первых целых три, тут то что я написал и задание,не хочется приходить на учёбу не подготовленному ,хочется разобраться.
Процедура ПриНачалеРаботыСистемы() Строка = ""; ВвестиЗначение(Строка,"Введите слово"); Счётчик = СтрДлина(Строка); Символ = ""; ЧислоСимволов = СтрДлина (Строка); Пока Счётчик >= 0 Цикл Счётчик = Счётчик - 1; Символ = Сред(Строка,Счётчик,1); Сообщить(Символ); КонецЦикла; Сообщить("Проверены все " + ЧислоСимволов + " символов !"); КонецПроцедуры // Необходмо вывести введенную пользователем строку наоборот, например: // - если введено слово "Привет!", вывести "!тевирП"; // - если "абвгде", вывести "едгвба". // При выполнении задания использовать оператор ВвестиЗначение и СтрДлина // Переменная Счетчик изначально должна быть ровна длине строки // Счетчик в цикле должен уменьшаться на 1, пока не станет равным 0 // Склеивание символов будет происходить следующей командой: "Слово = Слово + Символ;" // Переменная слово изначально имеет значение "" (пустое значение). |
|||
1
hhhh
08.11.19
✎
21:06
|
Пока Счётчик > 0 Цикл
Символ = Сред(Строка,Счётчик,1); Счётчик = Счётчик - 1; Сообщить(Символ); КонецЦикла; |
|||
2
Tolh
08.11.19
✎
21:54
|
Большое спасибо !!!!
|
|||
3
Кодер
08.11.19
✎
21:57
|
1. Возьми листок и, представляя себя компьютером, выполни свою же программу. Поймёшь, что лишнее сделал, где ошибся.
2. Учебные и тестовые примеры полезно решать самостоятельно. 3. Не делай сразу вывод, а собери переменную. "Всё должно быть функцией". 4. Может, не стоит в 1С? https://javarush.ru/quests/QUEST_HARVARD_CS50 |
|||
4
Tolh
08.11.19
✎
22:08
|
Спасибо за советы , а на счёт стоит или нет в 1С рано ещё говорить ,совсем мало времени я занимаюсь, да и на платных курсах я , надо уж добить а там посмотрим что из меня получится
|
|||
5
Ёпрст
08.11.19
✎
22:13
|
ну или так
|
|||
6
Tolh
08.11.19
✎
22:16
|
Спасибо!
|
|||
7
mikecool
09.11.19
✎
00:08
|
то ли дело на питоне s[::-1] и все
|
|||
8
Злопчинский
09.11.19
✎
00:57
|
(3) кривые курсы какие-то
пишут "Основы программирования» на русском языке!" а где код на русском языке? 1С почему нет? |
|||
9
Fram
09.11.19
✎
04:14
|
Ещё рекурсией можно )
|
|||
10
Михаил Иванович
09.11.19
✎
05:33
|
(7) всего одна строка )))
|
|||
11
НичегоНе Понятно
09.11.19
✎
09:18
|
(7)В питоне все объекты. Даже строки. У этого тоже есть своя цена. Я как то раз переписал раскраску кода с обработки ИТС на питон. Почти дословно. Питон кушал проц как не в себя На текст 5-7к символов уходило до нескольких секунд 100% загрузки проца. В 1с- миллисекунды с минимальной задржкой
|
|||
12
bolero
09.11.19
✎
12:13
|
(11) в том и дело, что переписал дословно, а вероятно надо было с учетом средств нового языка
тем паче для раскраски кода есть гора готовых быстрых решений, только определение синтаксиса допиши для них пример: для каждого значение из массив1: если значение не в списке значений массив2, то добавить значение в массив2 если написать такое в лоб в 1С - это вобщем-то нормально, потому что по-другому - НИКАК если написать такое в лоб на питоне, а массивы по 10к вхождений - он загрузит проц на несколько секунд а если сделать array2 = list(set(array2).union(set(array1)) - отработает за 10 мс |
|||
13
НичегоНе Понятно
13.11.19
✎
03:51
|
(12)Я не говорю, что это не решаемая задача. В конце концов, надо просто использовать регулярные выражения. Я говорю что красота в (7) не бесплатная.
|
|||
14
Kigo_Kigo
13.11.19
✎
08:00
|
СтрокаПереворота=ПолучитьБуферДвоичныхДанныхИзСтроки(Данные);
СтрокаПереворота.Перевернуть(); ДанныеНовые=ПолучитьСтрокуИзБуфераДвоичныхДанных(СтрокаПереворота); |
|||
15
ДенисЧ
13.11.19
✎
08:46
|
(14) Мдя... На голом ASCII сработает. На уникоде? А эмодзи всякие?
|
|||
16
Сияющий в темноте
13.11.19
✎
08:54
|
(15)особенно приятно utf8 изменится.
unicode то только порядок байтов поменяет. |
|||
17
Tolh
15.11.19
✎
23:45
|
Опять я к вам за помощью , хоть и посоветовали самому всё решать но тем не менее ,видимо подзамылился.
Я посчитал слова в строке а как посчитать пробелы? Процедура ПриНачалеРаботыСистемы() Строка = "В этой $строке& не ровно _6_ слов... "; ПодсчётСлов(Строка); ПодсчётПробелов(Строка); КонецПроцедуры Процедура ПодсчётСлов(Строка) ДлинаСтроки = СтрДлина(Строка); ТекущаяПозиция = 1; СчётчикСлов = 0; Пока ТекущаяПозиция <= ДлинаСтроки Цикл ТекущийСимвол = Сред(Строка,ТекущаяПозиция,1); Если ТекущийСимвол = " " Тогда Если ТекущаяПозиция > 1 Тогда СчётчикСлов = СчётчикСлов + 1; КонецЕсли; Пока ТекущийСимвол = " " И ТекущаяПозиция <= ДлинаСтроки Цикл ТекущийСимвол = Сред(Строка,ТекущаяПозиция,1); ТекущаяПозиция = ТекущаяПозиция + 1; КонецЦикла; Иначе ТекущаяПозиция = ТекущаяПозиция + 1; КонецЕсли; КонецЦикла; Если ТекущийСимвол <> " " Тогда СчётчикСлов = СчётчикСлов + 1; КонецЕсли; Сообщить("В этой строке " + СчётчикСлов + " слов"); КонецПроцедуры |
|||
18
Fram
16.11.19
✎
02:54
|
Если бы ПодсчётСлов написал ты сам, с подсчётом пробелов у тебя не возникло бы никаких вопросов
|
|||
19
Tolh
16.11.19
✎
13:13
|
ПодсчётСлов я написал под руководством преподавателя а тут остался один на один с кодом , то есть просто принципиально никто не поможет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |