Задания для подготовки к работе. 1. Изучить файловый тип, организацию работы с последовательными файлами и возможности Турбо Паскаля для организации прямого доступа к записям файла.
1. Изучить файловый тип, организацию работы с последовательными файлами и возможности Турбо Паскаля для организации прямого доступа к записям файла.
2. Разработать алгоритм и составить программу для решения каждой из двух задач соответствующего варианта. В первой задаче используются только последовательные файлы, во второй рекомендуется пользоваться средствами прямого доступа к записям типизованных файлов. При работе с типизованными файлами, если возможно, не использовать вспомогательные файлы. Предусмотреть вывод содержимого файла на экран.
3. Для создания файлов исходных данных использовать любой текстовый редактор или вспомогательные программы.
4. Подобрать наборы тестовых данных.
Варианты заданий
1. a. Дан текстовый файл. Сохранить в файле только те символы, за которыми следует буква "a".
б. Дан файл, компонентами которого являются последовательности целых чисел длины n(n-const). Каждую последовательность в файле заменить максимальным членом.
2. a. В текстовом файле несколько последовательных одинаковых символов заменить одним.
б. Дан файл, компоненты которого являются целыми числами. Преобразовать его, исключив повторные вхождения одного и того же числа.
3. a. Даны два текстовых файла. Вывести начальные буквы строк, которые есть в каждом из данных файлов.
б. Даны целочисленные файлы f и g одинаковой длины. Оставить в f только те компоненты fi, которые больше компонентов gi файла g.
4. a. Дан текстовый файл. Вывести все согласные, которых нет ни в одном слове.
б. Дан файл, компонентами которого являются n-мерные векторы (n-const). Векторы с наибольшим модулем перенести в конец файла.
5. a. Дан текстовый файл. Удалить из него однобуквенные слова и лишние пробелы.
б. В файле записей хранится информация о спортсменах: Ф.И.О., наилучший результат. Требуется сформировать команду из nлучших спортсменов. Преобразовать файл, сохранив в нем информацию только о членах команды.
6. a. Преобразовать текстовый файл, удалив последнее слово в каждой строке.
б. В файле целых чисел хранятся последовательности, не содержащие нулей. Ноль служит разделителем последовательностей. Преобразовать файл, удалив из каждой последовательности числа, встречающиеся более одного раза.
7. a. В текстовом файле записаны вещественные числа с плавающей точкой. Преобразовать файл, заменив каждое число, округленным до десятых значением, записанным в форме с фиксированной точкой.
б. В файле целых чисел хранятся последовательности натуральных чисел. Ноль – разделитель последовательностей. Преобразовать файл, сохранив в каждой последовательности члены, предшествующие первому минимальному значению.
8. a. Дан текстовый файл. Найти самое длинное слово среди слов, начинающихся буквой "a". Если таких слов нет, сообщить об этом. Слова, начинающиеся буквой "a", записать в другой файл.
б. Дан файл с записями, состоящими из названия города и численности его населения. Файл упорядочен по неубыванию численности. Преобразовать его так, чтобы города в файле были упорядочены по невозрастанию численности.
9. a. Вывести все буквы данного текстового файла, входящие в файл не менее двух раз.
б. Даны целочисленные файлы f и g. Удалить из файла f числа, которые есть в g.
10. a. В текстовом файле хранится информация о каждом студенте группы: фамилия и оценки по трем предметам. Переписать эти данные в типизованный файл записей, исключая сведения о неуспевающих студентах.
б. Удалить из данного файла целых чисел четные числа, а порядок следования нечетных изменить на обратный.
11. a. Дан текстовый файл. Первое слово каждой строки файла дописать в файл.
б. В файле целых чисел хранятся последовательности натуральных чисел. Ноль – разделитель последовательностей. Преобразовать файл, удалив из каждой последовательности члены, следующие за последним максимальным значением.
12. a. Даны текстовые файлы f и g. Оставить в файле f только те строки файла f, которые есть и в файле g.
б. В файле записей хранятся многочлены в порядке убывания степеней. Каждая запись содержит два поля: степень члена и коэффициент. Члены с нулевыми коэффициентами не хранятся. Свободный член присутствует обязательно, даже если он равен нулю. Удалить из файла многочлены, для которых данное x является корнем.
13. a. Матрица, в которой число строк n вдвое меньше числа столбцов, хранится в текстовом файле. Сохранить в этом файле матрицу порядка n´n, удалив последние n столбцов.
б. В файле f записей хранится следующая информация о товарах, имеющихся на складе: наименование товара, цена единицы товара, общая стоимость и количество. В файле записей g хранится информация о заказах: наименование товара и его количество. Обновить файл f с учетом отпущенных товаров в соответствии с заказами из файла g. Если товар отпущен полностью, запись о нем из файла f удаляется.
14. a. Преобразовать данный текстовый файл целых чисел так, чтобы числа разделялись двумя пробелами и в каждой строке (за исключением, возможно, последней) было по десять чисел.
б. Даны целочисленные файлы f и g. Удалить из файла f числа, которые входят в файл g более двух раз.
15. a. В текстовом файле хранятся целочисленные квадратные матрицы порядка не более n(n – const) следующим образом: сначала целое число n – порядок матрицы, а затем ее элементы по строкам. Преобразовать файл так, чтобы элементы матрицы хранились по столбцам.
б. Дан символьный файл. Сократить число пробелов между словами до одного.
16. a. В текстовом файле записаны вещественные числа в форме с фиксированной точкой. Преобразовать файл, представив каждое число в форме с плавающей точкой, сохранив две цифры после точки в мантиссе.
б. В файле записей о результатах вступительных экзаменов хранится следующая информация: Ф.И.О. абитуриента, результаты экзаменов по физике и математике (от 0 до 10) и по русскому языку (зачет/незачет). Удалить из файла записи об абитуриентах, имеющих неудовлетворительные оценки (меньше четырех баллов или незачет), и об абитуриентах, у которых сумма баллов по физике и математике меньше данного p.
17. a. В текстовом файле хранятся квадратные вещественные матрицы порядка n(n – const) по строкам. Преобразовать файл, удалив из каждой матрицы первую строку и первый столбец.
б. Дан файл целых чисел. Нулевых компонент в файле нет. Число отрицательных компонент равно числу положительных. Преобразовать файл таким образом, чтобы сначала были положительные числа, а затем отрицательные. Порядок следования как положительных, так и отрицательных чисел сохранить.
18. a. Дан текстовый файл, представляющий собой запись арифметичес-кого выражения, операндами которого являются однозначные числа. Число операций в выражении не больше двух. Вычислить значение этого выражения и дописать его в конец этого файла.
б. В файле целых чисел хранятся последовательности натуральных чисел. Ноль – разделитель последовательностей. Преобразовать файл, удалив из каждой последовательности члены, предшествующие первому минимальному значению.
19. a. В текстовом файле хранится последовательность целых чисел. Получить типизованный файл из неповторяющихся чисел текстового файла.
б. Дан файл, число компонент которого кратно четырем. Файл состоит из целых чисел не равных нулю, число положительных компонент файла равно числу отрицательных. Преобразовать файл так, чтобы два положительных числа чередовались с двумя отрицательными.
20. a. Дан текстовый файл. Преобразовать его, удалив из каждой строки слова, встречающиеся более двух раз.
б. Дан файл, компоненты которого являются целыми числами, не равными нулю. Преобразовать файл таким образом, чтобы соседние компоненты имели разные знаки. Если количествa положительных и отрицательных чисел разные, то оставшиеся числа одного знака удалить из файла.
21. a. Дан текстовый файл целых чисел. Получить типизованный файл, содержащий последние числа каждой строки.
б. В файле целых чисел хранятся последовательности ненулевых чисел. Ноль – разделитель последовательностей. Преобразовать файл, удалив в каждой последовательности члены между первым и вторым отрицательным числом. Если отрицательных чисел меньше двух, последовательность исключить из файла.
22. a. Дан текстовый файл. Преобразовать его, оставив в каждой строке только самое длинное слово.
б. В файле целых чисел хранятся последовательности натуральных чисел. Ноль – разделитель последовательностей. Преобразовать файл, сохранив в каждой последовательности члены, следующие за последним максимальным значением.
23. a. В текстовом файле хранятся квадратные вещественные матрицы порядка n(n – const). Преобразовать файл, удалив из каждой матрицы последнюю строку и последний столбец.
б. Дан файл целых чисел. Преобразовать этот файл так, чтобы сначала были числа, кратные трем, затем такие, которые при делении на три дают в остатке единицу, а все остальные удалить из файла.
24. a. Дан текстовый файл и строка s. Если самая длинная строка файла не совпадает со строкой s, то строку sдописать в файл.
б. Дан файл квадратных матриц порядка n(n – const). Преобразовать его, заменив каждую матрицу, не являющуюся симметричной, транспонированной.
25. a.В текстовом файле хранятся координаты векторов
(x1, y1, z1, x2, y2, z2, …). Преобразовать файл, удалив из него векторы, ортогональные данному вектору .
б. В файле целых чисел хранятся последовательности натуральных чисел. Ноль – разделитель последовательностей. Преобразовать файл, удалив из каждой последовательности члены, равные минимальному значению этой последовательности.
26. a. Даны текстовые файлы fи g. Дописать в файл f строки из файла g, которых нет в файле f . Файл g уничтожить.
б. В файле хранятся последовательности целых чисел, отличных от нуля. Ноль – разделитель последовательностей. Преобразовать файл, сохранив в каждой последовательности числа между первым и вторым отрицательным числом. Если отрицательных чисел меньше двух, последовательность исключить из файла.
27. a. Удалить из данного текстового файла слова, длина которых превышает данное число n.
б. Дан файл вещественных чисел. Заменить числа в файле со второго по предпоследнее средним арифметическим данного, предыдущего и последующего.
28. a. В текстовом файле хранятся квадратные вещественные матрицы порядка n(n – const). Преобразовать файл, удалив из каждой матрицы элементы главной диагонали.
б. Записная книжка, в которой хранятся фамилии, телефоны и адреса знакомых, представляет собой файл, в котором записи о знакомых упорядочены по фамилиям лексикографически. Вставить в файл новую запись, если такой нет, не нарушив при этом упорядоченности.
29. a. В текстовом файле хранятся квадратные вещественные матрицы порядка n(n – const). Преобразовать файл, удалив из каждой матрицы элементы побочной диагонали.
б. Дан файл целых чисел. Преобразовать его, удалив нечетные числа. Порядок следования четных чисел сохранить.
30. а. Дан текстовый файл f. Записать в файл g символы файла f в обратном порядке, оставив только первые вхождения каждого символа.
б. Дан файл из ненулевых целых чисел и целое n. Числа в файле идут в следующем порядке: 2n положительных, 2n отрицательных и так далее. Преобразовать файл так, чтобы числа в файле были записаны в cледующем порядке: n положительных, n отрицательных и так далее.
Контрольные вопросы
1. Что такое физический и логический файл?
2. Перечислите виды файлов в Турбо Паскале. Как они описываются?
3. Назовите отличия файлового типа от типа массив.
4. Назначение процедур открытия и закрытия файлов.
5. Сравните текстовые и типизованные файлы по способу доступа к записям и по способу хранения данных.
6. Как осуществляется чтение из текстовых и типизованных файлов?
7. Как производится запись в текстовые и типизованные файлы?
8. Перечислите библиотечные процедуры и функции Турбо Паскаля для осуществления прямого доступа к файлам.
ЛАБОРАТОРНАЯ РАБОТА № 9
Создание гибких подпрограмм для обработки матриц произвольного порядка с фиксированным базовым типом
Цель работы: закрепление навыков использования нетипизованных параметров подпрограмм и освоение работы с параметрами, являющимися открытыми массивами.