Загрузка данных


Стр = "";
ВвестиСтроку(Стр, "Введите слово");

// Приводим к нижнему регистру для корректного сравнения
СтрокаПроверки = НРег(Стр);

Начало = 1;
Конец = СтрДлина(СтрокаПроверки);
Палиндром = Истина;

Пока Начало <= Конец Цикл
	СимволСлева = Сред(СтрокаПроверки, Начало, 1);
	СимволСправа = Сред(СтрокаПроверки, Конец, 1);
	
	Если СимволСлева <> СимволСправа Тогда
		Палиндром = Ложь;
		Прервать;
	КонецЕсли;
	
	Начало = Начало + 1;
	Конец = Конец - 1;
КонецЦикла;

Если Палиндром = Истина Тогда
	ОткрытьЗначение("Строка """ + Стр + """ является палиндромом");
Иначе
	ОткрытьЗначение("Строка """ + Стр + """ не является палиндромом");
КонецЕсли;
```[span_1](start_span)[span_1](end_span)

**📷 Что скриншотить:**
1. Окно Конфигуратора с кодом упражнения в модуле[span_2](start_span)[span_2](end_span).
2. Окно ввода строки со словом, например, `шалаш`.
3. Итоговое окно с сообщением: `Строка "шалаш" является палиндромом`[span_3](start_span)[span_3](end_span).

---

### Упражнение №8. Подсчет слов, пробелов и знаков препинания

Для проверки вхождения символа в строку знаков препинания используется функция `Найти`. В 1С кавычка внутри строкового литерала экранируется удвоением (`""""`).

**Что вставить в `Модуль приложения`:**[span_4](start_span)[span_4](end_span)

```bsl
Текст = "";
ВвестиСтроку(Текст, "Введите текст");

ЗнакиПрепинания = "`~!@#$%^&*()-=_+\|[]{};':"",.<>/?";

КоличествоСлов = 0;
КоличествоПробелов = 0;
КоличествоЗнаковПрепинания = 0;
МыВСлове = Ложь;

ДлинаТекста = СтрДлина(Текст);

Для А = 1 По ДлинаТекста Цикл
	Символ = Сред(Текст, А, 1);
	
	Если Символ = " " Или Найти(ЗнакиПрепинания, Символ) > 0 Тогда
		Если МыВСлове Тогда
			КоличествоСлов = КоличествоСлов + 1;
		КонецЕсли;
		
		МыВСлове = Ложь;
		
		Если Символ = " " Тогда
			КоличествоПробелов = КоличествоПробелов + 1;
		Иначе
			КоличествоЗнаковПрепинания = КоличествоЗнаковПрепинания + 1;
		КонецЕсли;
	Иначе
		МыВСлове = Истина;
	КонецЕсли;
КонецЦикла;

Если МыВСлове = Истина Тогда
	КоличествоСлов = КоличествоСлов + 1;
КонецЕсли;

Сообщить("Количество слов: " + КоличествоСлов);
Сообщить("Количество пробелов: " + КоличествоПробелов);
Сообщить("Количество знаков препинания: " + КоличествоЗнаковПрепинания);


Текст = "";
ВвестиСтроку(Текст, "Введите текст");

Текст = НРег(Текст);
ЗнакиПрепинания = "`~!@#$%^&*()-=_+\|[]{};':"",.<>/?";

Слова = Новый Массив;
ТекущееСлово = "";
МыВСлове = Ложь;

ДлинаТекста = СтрДлина(Текст);

Для А = 1 По ДлинаТекста Цикл
	Символ = Сред(Текст, А, 1);
	
	Если Символ = " " Или Найти(ЗнакиПрепинания, Символ) > 0 Тогда
		Если МыВСлове Тогда
			Слова.Добавить(ТекущееСлово);
			ТекущееСлово = "";
		КонецЕсли;
		МыВСлове = Ложь;
	Иначе
		МыВСлове = Истина;
		ТекущееСлово = ТекущееСлово + Символ;
	КонецЕсли;
КонецЦикла;

Если МыВСлове Тогда
	Слова.Добавить(ТекущееСлово);
КонецЕсли;

// Сортировка массива методом пузырька по возрастанию длины слов
Пока Истина Цикл
	БылиПерестановки = Ложь;
	
	Для Шаг = 0 По Слова.Количество() - 2 Цикл
		Если СтрДлина(Слова[Шаг]) > СтрДлина(Слова[Шаг + 1]) Тогда
			Буфер = Слова[Шаг];
			Слова[Шаг] = Слова[Шаг + 1];
			Слова[Шаг + 1] = Буфер;
			БылиПерестановки = Истина;
		КонецЕсли;
	КонецЦикла;
	
	Если БылиПерестановки = Ложь Тогда
		Прервать;
	КонецЕсли;
КонецЦикла;

Сообщить("=== Словарь по возрастанию длины ===");
Для Каждого Слово Из Слова Цикл
	Сообщить(Слово + " (" + СтрДлина(Слово) + ")");
КонецЦикла;
```[span_8](start_span)[span_8](end_span)

**📷 Что скриншотить:**
1. Окно Конфигуратора с кодом разбивки и пузырьковой сортировки[span_9](start_span)[span_9](end_span).
2. Окно служебных сообщений режима «1С:Предприятие» с выведенным списком слов от самых коротких к самым длинным.