Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Praktikum-S__wofp.pdf
Скачиваний:
166
Добавлен:
11.02.2015
Размер:
22.69 Mб
Скачать

Лабораторная работа № 5 Файловые функции. Работа с файлами

Лабораторная работа посвящена вопросу организации вводавывода в С++, работе с файлами, последовательному и произвольному доступу к файлам, форматному и двоичному вводувыводу.

225

ОБРАЗЕЦ ОТЧЁТА ПО ЛАБОРАТОРНОЙ РАБОТЕ

226

227

228

229

230

231

232

233

234

235

236

237

238

Задачи

1.Имеется текстовый файл. Написать программу печати первой из самых коротких строк.

2.В текстовом файле дана последовательность слов, содержащих от 1 до 8 букв, между соседними словами – запятая, за последним словом точка. Вывести в файл result.dat все слова, отличные от последнего слова.

3.Описать функцию invertIntFile(name), меняющую порядок следования элементов целого типа в файле с именем name на противоположный. Если файл не существует или содержит менее двух элементов, то функция не выполняет никаких действий. Обработать с помощью этой функции три файла с данными именами.

4.Описать функцию textSize(name) целого типа, возвращающую число строк в текстовом файле с именем name. Если файл не существует, то функция возвращает –1. С помощью этой функции определить размер трёх файлов с данными именами.

5.В текстовом файле t1 записана последовательность целых чисел,

разделённых

пробелами.

Описать

функцию

positive(t1, t2),

записывающую в текстовый файл t2 все положительные и чётные числа из t1.

6.Описать функцию getLine(name, k) строкового типа, возвращающую k-ю строку текстового файла с именем name (строки нумеруются от 0). Если файл не существует или не содержит k-й строки, то функция возвращает пустую строку. С помощью этой функции вывести пять строк данного файла с указанными номерами.

7.Дан текстовый файл, представляющий собой таблицу, состоящую из трёх столбцов с целыми числами. В начале и в конце каждой строки таблицы, а также между ее столбцами располагается символразделитель. Ширина столбцов таблицы и способ их выравнивания

239

являются произвольными. Создать файл целых чисел, содержащий сумму чисел из каждой строки исходной таблицы.

8.Дан файл вещественных чисел с именем name1. Создать два новых файла с именами name2 и name3, первый из которых содержит элементы исходного файла с чётными номерами (0, 2, 4, ...), а второй — с нечетными (1, 3, 5, ...).

9.Описать функцию digits(s, t), которая записывает в текстовый файл t все цифры, содержащиеся в строках текстового файла s.

10.Описать функцию less(f), которая подсчитывает количество элементов непустого файла f, содержащего вещественные числа, меньших среднего арифметического всех элементов этого файла.

11.Описать логическую функцию equal(f, g), проверяющую на идентичность текстовые файлы f и g.

12.Дано число n и текстовый файл. Удалить из файла абзац с номером n (абзацы выделяются с помощью красной строки (5 пробелов) и нумеруются от 1). Пустые строки между абзацами не учитывать и не удалять. Если абзац с данным номером отсутствует, то оставить файл без изменений.

13.В текстовом файле t записана непустая последовательность вещественных чисел, разделённых пробелами. Описать функцию minMax(t) для нахождения наименьшего и наибольшего из этих чисел и их порядковые номера в файле.

14.Описать функцию, lines(t), которая построчно печатает содержимое непустого текстового файла t, вставляя в начало каждой печатаемой строки её порядковый номер (он должен занимать 4 позиции) и пробел.

15.Описать логическую функцию mid(f, m), которая определяет, имеет ли файл f вещественного типа нечётную длину, и, если имеет, присваиваем параметру m средний элемент этого файла.

16.Вывести в произвольный файл таблицу значений функции sin(x), cos(x), tg(x), ctg(x) на отрезке [0, 3] с шагом 0,1. Значения x печатать с одной

240

цифрой в мантиссе, sin – с тремя, ctg – в экспоненциальной форме, а все остальные с тремя знаками.

17.Описать функцию getInt(name, k) целого типа, возвращающую k-й элемент файла целых чисел с именем name (элементы нумеруются от 0). Если файл не существует или не содержит k-го элемента, то функция возвращает 0. С помощью этой функции вывести пять элементов данного файла с указанными номерами.

18.Описать функцию, которая подсчитывает количество пустых и непустых строк в произвольном текстовом файле и находит номера строк максимальной длины.

19.Описать функцию concatFile(nameA, nameB, nameAB), позволяющую объединить содержимое двух двоичных файлов nameA и nameB одного и того же типа в новом файле nameAB. Применить эту функцию к парам исходных файлов name1name2, name1name3 и name2name3, создав

файлы с именами name12, name13, name23.

20. Описать процедуру splitText(name0, k, name1, name2), копирующую первые k ( k0 ) строк существующего текстового файла с именем name0 в файл name1, а остальные элементы — в файл name2 (прежнее содержимое результирующих файлов стирается). Один из результирующих файлов может оказаться пустым. Применить эту процедуру к файлу name0, используя указанные значения name1, name2 и k.

21.Описать функцию codeText(name, k), шифрующую текстовый файл с

именем name, выполняя циклическую замену каждой русской буквы на букву, расположенную в алфавите на k-й позиции после исходной (0 < k < 11). Например, при k = 3 'А' перейдёт в 'Г', 'а' — в 'г', 'Я' — в 'В'. Прочие символы файла не изменять. Используя эту функцию и зная k, зашифровать и затем расшифровать данный файл.

22.Дан файл вещественных чисел. Поменять в нём местами минимальный и

241

максимальный элементы.

23.Дан файл вещественных чисел. Заменить в файле каждый элемент, кроме начального и последнего, на его среднее арифметическое с предыдущим и последующим элементами.

24.Дан текстовый файл с именем nameT. Подсчитать число повторений в нем строчных русских букв ('а' – 'я') и создать строковый файл с именем nameS, элементы которого имеют вид: “<буква> – <число повторений данной буквы>”. Буквы, отсутствующие в тексте, в файл не включать. Строки упорядочить по убыванию числа повторений букв, а при равном числе повторений — по возрастанию кодов букв.

25.Дан файл целых чисел. Если количество его элементов меньше 50, то дополнить его нулями до 50 элементов; если его размер больше 50, то урезать его до 50 элементов.

26.Даны два целых числа i и j и файл вещественных чисел, содержащий элементы квадратной матрицы (по строкам). Вывести элемент матрицы, расположенный в i-й строке и j-м столбце (строки и столбцы нумеруются от 1). Если требуемый элемент отсутствует, то вывести 0.

27.Описать функцию, переписывающую в текстовый файл t1 содержимое текстового файла t2, но без пустых и повторяющихся строк.

28.Описать функцию splitIntFile(name0, k, name1, name2), копирующую первые k ( k0 ) элементов существующего файла целых чисел с именем name0 в файл name1, а остальные элементы — в файл name2 (прежнее содержимое результирующих файлов стирается). Один из результирующих файлов может оказаться пустым. Применить эту функцию к файлу name0, используя указанные значения name1, name2 и k.

29.Даны два файла целых чисел одного размера с именами name1 и name2. Создать текстовый файл с именем nameT, содержащий изображения этих чисел, расположенные в два столбца шириной по 30 символов: первый

242

содержит числа из файла name1, второй — из файла name2. В начале и конце каждой строки текстового файла ввести разделитель '|'. Числа выравниваются по правому краю столбца.

30.Дан строковый файл, содержащий даты в формате "день/месяц/год", причем под день и месяц отводится по две позиции, а под год — четыре. Создать новый строковый файл, в котором даты из исходного файла располагались бы в порядке возрастания.

31.Пусть в каждом из файлов f и g целочисленные элементы упорядочены по возрастанию. Требуется объединить эти файлы в один файл h, также упорядоченный по возрастанию.

32.Даны имена двух файлов, содержащих вещественные числа. Известно, что один из них существует и содержит не менее двух элементов, а другой в текущем каталоге отсутствует. Создать отсутствующий файл и записать в него первый и последний элементы существующего файла.

33.Дан файл вещественных чисел, содержащий элементы квадратной матрицы (по строкам). Создать файл, содержащий элементы матрицы, транспонированной к исходной.

34.Дан текстовый файл с именем nameT. В каждой его строке первые 60 позиций отводятся под текст, а оставшаяся часть — под вещественное число. Создать два файла: строковый файл с именем nameS, содержащий текстовую часть исходного файла, и файл вещественных чисел с именем nameR, содержащий числа из исходного файла.

35.Дано целое число n и текстовый файл с именем name1, содержащий один абзац текста, выровненный по левому краю. Отформатировать текст так, чтобы его ширина не превосходила n позиций, и выровнять текст по правому краю. Пробелы в конце строк удалить. Сохранить отформатированный текст в новом текстовом файле с именем name2.

243