Найти в строке первое слово, начинающееся с заданного символа, и не короче заданной длины - PascalABC.NET
Формулировка задачи:
Дано: в текстовом файле fin.txt находится текст на русском языке. С клавиатуры вводится символ C и число K.
Требуется: написать подпрограмму, которая в заданной строке S находит первое самое короткое слово, начинающееся на символ C, но длина этого слова должна быть не меньше чем K символов (т.е. самое короткое из слов, не меньшее чем K символов).
Например, если дана строка: "На лабораторной работе была поставлена задача проверки попадания заданной точки в указанную область на плоскости и расчет площади указанной области", символ 'п' и цифра 5, то получим "площади".
Используя эту подпрограмму, сформировать текстовый файл fout.txt, K-ой строкой которого является строка, полученная описанным выше способом из К-ой строки файла fin.txt.
Вывести полученный компонентный файл на экран.
Помогите пожалуйста
Решение задачи: «Найти в строке первое слово, начинающееся с заданного символа, и не короче заданной длины»
textual
Листинг программы
uses lazutf8classes, lazutf8; // эти модули нужно добавить в uses // собственно, подпрограмма function Search(s : string; ch : string; k : integer) : string; var L : TStringListUTF8; t : string; begin Result := ''; L := TStringListUTF8.Create; L.StrictDelimiter := True; L.Delimiter := ' '; L.DelimitedText := s; for t in L do if (Length(t) > k) and (UTF8Copy(t, 1, 1) = ch) then if (Result = '') or (Length(Result) > Length(t)) then Result := t; L.Free; end; // и обработчик нажатия на кнопку procedure TForm1.Button1Click(Sender: TObject); var c : string; k, len : Integer; begin c := InputBox('Ввод данных', 'Первый символ слова', 'п'); k := StrToInt(InputBox('Ввод данных', 'Номер строки для замены:', '4')); len := StrToInt(InputBox('Ввод данных', 'Минимальная длина слова:', '5')); with TStringListUTF8.Create do try StrictDelimiter := True; LoadFromFile('fin.txt'); if k < Count then Strings[Pred(k)] := Search(Strings[Pred(k)], c, len); SaveToFile('out.txt'); finally Free; end; end;
Объяснение кода листинга программы
- В функции
Search
создается объектTStringListUTF8
для разделения исходной строки по пробелам. - Если длина слова больше
k
, и первый символ слова совпадает с заданным символом, то это слово добавляется в результат, если результат еще не определен или его длина меньше длины текущего слова. - В обработчике события
Button1Click
пользователю предлагается ввести первый символ слова, номер строки для замены и минимальную длину слова. - Создается объект
TStringListUTF8
для работы со строками. - Файл
fin.txt
загружается в объектTStringListUTF8
. - Если номер строки меньше количества строк в файле, то текущая строка заменяется результатом работы функции
Search
. - Файл
out.txt
сохраняется с обновленными данными. - Объект
TStringListUTF8
освобождается.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д