Лабораторная работа 7. Работа с функциями ввода-вывода.

Задание:

Написать программу, выполняющую чтение текстового файла “input. in” и выполняющую его преобразование в соответствии с вашим вариантом задания. Результаты запишите в новый файл (Для удобства проверки правильности работы программы) “output. out”.

Примечания:

Имя файла, который подлежит обработке, должно быть входным параметром программы. Файл должен иметь не менее 5 строк текста. Допускается ограничить максимальную длину строки в тексте 80 символами. Допускается (если в индивидуальном задании не оговорено другое) считать, что слова разделяются пробелами, а знаки препинания рассматривать как буквы. Программу следует разрабатывать, исходя из предположения, что весь текст из файла не может быть размещен в оперативной памяти. Допускается создавать при выполнении программы временные файлы (кроме выходного), которые, однако, не должны сохранятся после окончания программы.

Варианты заданий:


1

В каждой строке файла удалить лишние пробелы между словами.


2

В каждой строке вставить после знаков препинания пробел, если их там нет.


3

В каждой строке исходного файла поменять местами первое и последнее слово и записать в выходной файл.

Например:

Input. in: Шла Саша по шоссе.

Output. out: Шла Саша шоссе.

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

Int substr(char *src_string, char *output_string, int offset, int length_of_substring);

4

В каждой строке файла все слова, длина которых превышает среднюю длину слов в строке, сократить до средней длины.


5

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

Пример:

Файл input. in

- монитор, системный блок, клавиатура

- ноутбук мышь зарядное устройство дисплей мат. плата

- офис антивирус драйверы

- мобильный телефон стилус чехол

Введенная буква: М

Выходной файл:

- монитор

- мышь мат. плата

- мобильный

В целях упрощения задания допускается в качестве разделителя между словами использовать только пробел.


6

В выходной файл из входного записать только те строки, в которых первые три буквы совпадают с начальными буквами последнего слова строки.

Например:

Input. in:

rose is so rose (1-е 3 буквы последнего слова – ros)

but not a tulip (tul)

jakk is not jarek (jar)

jajaja jejeje jajaja (jaj)

Output. out

rose is so rose

jajaja jejeje jajaja


7

Во всем тексте вставить переход на новую строку там, где есть два или больше пробела подряд. Записать в выходной файл.


8*

Напишите программу простейшего лексического анализа исходного текста программы на Си: программа должна проверять сбалансированность открывающих и закрывающих скобок – {, (, [. Текст в кавычках и в комментариях можете не проверять.

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

Подсказка: Это очень простое задание. Воспользуйтесь конструкцией switch-case и при встрече открывающей скобки увеличивайте счетчик, а при встрече закрывающей – уменьшайте. Соответственно, при отсутствии ошибок в файле счетчик должен быть равен нулю в результате работы.