Глава 1
Задача 1.7 Разделитель строк 3
Напишите программу, в которой пользователь вводит строку.
Программа должна вывести каждое слово с новой строки и сделать это надо
в несколько отдельных компонентов, как например в Список, ПолеСоСписком и тд.
Решение
Код программы будет во многом похож на предыдущую.
Процедура Сформировать() не изменится, но появися процедура Вывод(),
которая выводит найденное слово в разные компоненты. И процедура Старт(), в которой
осуществляется инициализация переменных начальными значениями.
Код программы
Перем Буфер,Метка1,Ном,Слово;
//*********************************
Процедура Старт()
Ном = 1;
Слова="";
Список.УдалитьВсе();
ПолеСоСписком.УдалитьВсе();
Метка1="";
Табл1.УдалитьСтроки();
КонецПроцедуры
//-------------------------------------------
Процедура Вывод()
Сообщить(" "+Ном+". "+Слово+"("+Буфер+")");
Слова=Слова+ Ном + " " +Слово+РазделительСтрок;
Список.ДобавитьЗначение(Слово);
ПолеСоСписком.ТекущаяСтрока(1);
ПолеСоСписком.ДобавитьЗначение(Слово);
Метка1=Метка1+Слово+РазделительСтрок;
Табл1.НоваяСтрока();
Табл1.УстановитьЗначение(Ном,"ном",Ном);
Табл1.УстановитьЗначение(Ном,"Слова",Слово);
Ном=Ном+1;
КонецПроцедуры
//-------------------------------------------
Процедура Сформировать()
Старт();
Индекс = 0;
Слово = "";
Буфер=СокрЛП(Предложение);//убрали пробелы по краям
Пока(0 < Найти(Буфер," ")) Цикл
//начнем поиск
Если(0 < Найти(Буфер," "))Тогда //пробел есть
Индекс=Найти(Буфер," "); //найти пробел
Слово=Лев(Буфер,Индекс); //строка до пробела
Вывод();
Иначе
Слово=Буфер; //Пробела нет. Выведем строку.
Индекс=СтрДлина(Буфер);//Найти конец слова
Вывод();
КонецЕсли;
// сохраним в Темп строку без первого слева слова
Темп=Прав(Буфер,(СтрДлина(Буфер)-Индекс));
Буфер=СокрЛ(Темп);//уберем пробелы слева
КонецЦикла;
Слово=Буфер; //Пробела нет. Выведем строку.
Вывод();
КонецПроцедуры
Предложение="Привет как дела";
Старт();
Табл1.НоваяКолонка("ном",,,,"№",3,,);
Табл1.НоваяКолонка("Слова",,,,"Слова",10,,);
Назад |
Начало урока |
Вверх |
Вперед
Содержание