Разработать программу для работы с типизированным файлом. Программа должна сделать следующее:
При любых операциях содержимое как текстового, так и типизированного файла не должно записываться в массив. Для перестановки элементов типизированного файла необходимо использовать средства прямого доступа к файлу.
Имена файлов передаются через параметры программы.
В файле должны храниться целые числа в диапазоне от -20 до +60. Осуществляется поиск первого элемента, кратного 5, и перестановка его в конец файла.
Класс | Имя | Смысл | Тип | Структура |
---|---|---|---|---|
Входные данные | TextFileName | Имя текстового файла | строка | простая переменная |
TypedFileName | Имя типизированного файла | строка | простая переменная |
Класс | Имя | Смысл | Тип | Структура |
---|---|---|---|---|
Входные данные | TypedFileName | Имя типизированного файла | строка | простая переменная |
Класс | Имя | Смысл | Тип | Структура |
---|---|---|---|---|
Входные данные | TypedFileName | Имя типизированного файла | строка | простая переменная |
Выходные данные | r | Значение первого элемента, кратного 5 | цел. | простая переменная |
n | Номер позиции элемента, кратного 5, в файле (позиции нумеруются с 0) | цел. | простая переменная |
Класс | Имя | Смысл | Тип | Структура |
---|---|---|---|---|
Входные данные | TypedFileName | Имя типизированного файла | строка | простая переменная |
Выходные данные | Result | Результат перемещения | перечислимый | простая переменная |
№ теста | Входные данные | Ожидаемые результаты | Смысл теста |
---|---|---|---|
1 | x = {12, 46, -14, 78, -5, 13, 45, 9} |
r = -5 n = 3 x = {12, 46, -14, 13, 45, 9, -5} |
В файле есть элементы, кратные 5. Значение 78 было отброшено при преобразовании текстового файла в типизированный как непопадающее в указанный в задании диапазон. |
2 | x = {12, 46, -14, 13, 48, 9, 55} |
r = 55 n = 6 x = {12, 46, -14, 13, 48, 9, 55} |
В файле есть элемент, кратный 5, который находится на последнем месте. |
3 | x = {12, 45, -14, 13, 48, 9, 55} |
r = 45 n = 1 x = {12, -14, 13, 48, 9, 55, 45} |
В файле есть элемент, кратный 5. |
4 | x = {9, 1, -2, 33, 3, 17} | В файле нет элементов, кратных 5. |
При создании типизированного файла из текстового вводим значения из текстового файла по одному, и если значение попадает в заданный диапазон, записываем его в типизированный файл.
При поиске заданного значения вводим значения из типизированного файла по одному, считая при этом количество введённых значений, и если элемент удовлетворяет заданному условию, выходим из цикла. Значение позиции в файле, равное -1, может служить признаком отсутствия искомого элемента.
При перемещении элемента сначала необходимо проверить, что размер типизированного файла не равен 0 (с помощью функции FileSize). Затем используем подпрограмму поиска для поиска элемента, удовлетворяющего заданному условию, и его позиции в файле. Если элемент найден, то необходимо сместить ряд элементов файла вперёд или назад в зависимости от положения найденного элемента и позиции, куда его надо переместить. Это делается с помощью операций чтения и записи и прямого доступа к файлу. Затем найденный элемент записывается в нужную позицию. Функция перемещения должна возвращать значение, сигнализирующее о результате перемещения – файл пуст, элемент не найден, элемент успешно перемещён. Для того чтобы использовать не просто числовые значения, а осмысленные имена, создадим перечислимый тип.
type
Results = (Moved, FileIsEmpty, ElementNotFound);