Переписать слова из одного файла в другой, перевернув каждое - PascalABC.NET
Формулировка задачи:
Составить программу реализующую конкретную схему действий. В содержимое программы должна входить процедура формирования исходного файла нужного типа и формата
Задание
Дан текстовый файл,состоящий из слов разделенных пробелом.В конце текста - '.'.Образовать новый файл в котором на месте каждого слова из первого файла будет записана последовательность букв в обратном порядке (например буква->авкуб)
Решение задачи: «Переписать слова из одного файла в другой, перевернув каждое»
textual
Листинг программы
uses System.IO;
function makeS(InFileName,OutFileName:string):boolean;
var
l:string;
begin
l:='';Result:=false;
foreach s:string in &File.ReadAllLines(InFileName,Encoding.Default) do
if pos('.',s)>0 then begin
delete(s,pos('.',s),s.length);
l:=l+string.Join(' ',s.Split(' ').Select(ReverseString))+'.';
&File.WriteAllText(OutFileName,l,Encoding.Default);
Result:=true;
break;
end else l:=l+string.Join(' ',s.Split(' ').Select(ReverseString))+NewLine;
end;
begin
writelnformat('{0}',Makes('r1.txt','r2.txt') ? 'Новый файл создан успешно':'ошибка создания файла');
end.
Объяснение кода листинга программы
- Программа использует функцию
makeS, которая принимает два аргумента типаstring-InFileNameиOutFileName. - В функции определен пустой строковый буфер
lи флагResult, изначально установленный вfalse. - Используется цикл
foreach, который проходит по всем строкам входного файлаInFileName. - Если текущая строка содержит точку (
.), то строка обрабатывается следующим образом:- С помощью функции
posопределяется позиция точки в строке. - С помощью функции
deleteудаляются все символы после точки и сама точка. - С помощью функции
Splitстрока разделяется на массив строк по пробелам. - С помощью функции
ReverseStringкаждая строка из массива переворачивается. - С помощью функции
Joinстроки из массива объединяются в одну строку с разделителем пробела. - Полученная строка добавляется к буферу
l. - С помощью функции
WriteAllTextсодержимое буфераlзаписывается в файлOutFileName. - Флаг
Resultустанавливается вtrue. - Цикл прерывается с помощью оператора
break.
- С помощью функции
- Если текущая строка не содержит точки, она добавляется к буферу
l, предварительно перевернувшись с помощью функцииReverseString. В конце каждой строки добавляется символ новой строкиNewLine. - По завершении работы функции
makeSвыводится сообщение, информирующее о результате выполнения функции. - В основной части программы вызывается функция
makeSс аргументами'r1.txt'и'r2.txt'. - В зависимости от значения флага
Resultвыводится сообщение об успешном создании нового файла или об ошибке создания файла.