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