Обход строки

1. JUST4LOL 24.09.20 09:43 Сейчас в теме
Здравствуйте. Подскажите пожалуйста, задача такая:
Необходимо выполнить прямой и обратный обход вводимой строки. Например, дана строка: Привет. Обход должен выглядеть так:
Привет
пРивет
прИвет
приВет
привЕт
привеТ
И собственно в обратном порядке.
По теме из базы знаний
Найденные решения
3. herfis 499 24.09.20 10:00 Сейчас в теме
(1) Чувак. Это простейшая задача. Для обучения. Желательно решить ее самому.
Открой раздел СП с функциями операций над строками и подумай.
Ключевые моменты:
- строка это по сути массив символов, к которым можно обращаться по номеру в строке.
- тебе нужно заменять один символ на прописной в цикле. Это можно делать взяв подстроку до нужного символа, склеив ее с прописным символом и остатком строки.
FatPanzer; JUST4LOL; +2 1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. herfis 499 24.09.20 10:00 Сейчас в теме
(1) Чувак. Это простейшая задача. Для обучения. Желательно решить ее самому.
Открой раздел СП с функциями операций над строками и подумай.
Ключевые моменты:
- строка это по сути массив символов, к которым можно обращаться по номеру в строке.
- тебе нужно заменять один символ на прописной в цикле. Это можно делать взяв подстроку до нужного символа, склеив ее с прописным символом и остатком строки.
FatPanzer; JUST4LOL; +2 1 Ответить
2. Lenten 25 24.09.20 09:52 Сейчас в теме
Процедура Команда1(Команда)
	
	Для а = 1 по СтрДлина(Объект.СтрокаПер) Цикл
		
		Сообщить(Сред(Объект.СтрокаПер,а,1));
		
	КонецЦикла;	
	
	а = СтрДлина(Объект.СтрокаПер);
	
	Пока а > 0 Цикл 
		
		Сообщить(Сред(Объект.СтрокаПер,а,1));
		
		а = а - 1;
		
	КонецЦикла;	
	
КонецПроцедуры
Показать
kild; user838744; JUST4LOL; antonal123; +4 Ответить
4. FatPanzer 24.09.20 10:26 Сейчас в теме
(2) Молодец, справился с задачей. Мощно! Крутой! Но вот я уверен, что не стоит вместо ученика писать код. Надо наталкивать его на мысль о том, какие инструменты можно применить и как это можно реализовать. А если всегда жевать за него манную кашу - толка не будет.
5. Lenten 25 24.09.20 13:04 Сейчас в теме
(4)мне наплевать на "ученика". Мне просто было скучно
6. JUST4LOL 25.09.20 05:32 Сейчас в теме
Я разобрался) Всем спасибо за наставления :)
&НаКлиенте
Процедура ПолеВводаПриИзменении(Элемент)

    
НижнийРегистр = НРег(ПолеВвода);

х = 1;
Пока х <= СтрДлина(НижнийРегистр) Цикл
	Начало = НРег(Лев(НижнийРегистр, х - 1));
	БольшаяБуква = ВРег(Сред(НижнийРегистр, х, 1));
	ПраваяСторона = НРег(Сред(НижнийРегистр, х + 1));	
	Сообщить(Начало + БольшаяБуква + ПраваяСторона);
	х = х + 1;	
КонецЦикла;


у = 0;
х = СтрДлина(ПолеВвода);
Пока х >= 1 Цикл 
    
	Начало = НРег(Лев(НижнийРегистр, х - 1));
	БольшаяБуква = ВРег(Сред(НижнийРегистр, х, 1));
	ПраваяСторона = НРег(Прав(НижнийРегистр, у));	
	Сообщить(Начало + БольшаяБуква + ПраваяСторона);
	х = х - 1;
	у = у + 1;
КонецЦикла;

КонецПроцедуры
Показать
7. FatPanzer 25.09.20 08:50 Сейчас в теме
(6) Молодец. Только вопрос - а зачем во втором цикле переменная y? Там точно так же все решается одной переменной X, как и в первом цикле. Абсолютно. Разница только в использовании счетчика в циклах...

Кстати, совет - не называй переменные "ПолеВвода", НижнийРегистр" и так далее. Это тяжело читать, а потом и сам запутаешься, когда увидишь этот код через пару месяцев.
JUST4LOL; +1 Ответить
8. JUST4LOL 26.09.20 02:30 Сейчас в теме
(7) Без переменной У не получалось, решил добавить, я просто видимо не додумался. Спасибо за советы, я это ценю!
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот