Сортировка строк по числовому окончанию - Pascal
Формулировка задачи:
Здравствуйте. Прошу решить эту задачу.
Дан текстовый файл, содержащий строки из чисел и других символов. Строки варьируют по длине. Разделители: пробелы, могут быть и другие символы. Каждая строка заканчивается вещественным числом (пример: 6.11). Задача: рассортировать строки по возрастанию этого заключительного числа и записать в новый файл. Написать программы в коде ТП и выше - для отдельного использования, и в виде "точечной записи" класс(.объект.метод) в стиле .NET меньшим количеством строк - для сопутствующего использования в других программах. Образец входного файла ниже.
Решение задачи: «Сортировка строк по числовому окончанию»
textual
Листинг программы
begin
WriteAllLines('outfile.txt',
ReadAllLines('infile.txt').OrderBy(s -> StrToFloat(Regex.Match(s, '\d+\.\d+$').Value)).ToArray());
end.
Объяснение кода листинга программы
- Создается новый файл с именем
outfile.txt. - В этот файл записываются строки из файла
infile.txt, отсортированные по числовому значению, которое находится в конце каждой строки. - Процесс считывания строк происходит при помощи функции
ReadAllLines, а их последующей сортировки достигается с использованием методаOrderBy. - Значения переменных:
outfile.txt- имя создаваемого файла.infile.txt- имя файла, из которого считываются строки.s- строка из файла, используемая для сортировки.StrToFloat- функция, преобразующая строку в число.Regex.Match(s, '\d+\.\d+$').Value- извлечение числа с плавающей запятой из строки через регулярное выражение.