4011 4021 4031 Лабораторная работа 7

advertisement
Лабораторная работа 7. Работа с функциями ввода-вывода.
Задание:
Написать программу, выполняющую чтение текстового файла “input.in” и выполняющую его
преобразование в соответствии с вашим вариантом задания. Результаты запишите в новый файл
(Для удобства проверки правильности работы программы) “output.out”.
Примечания:
1.
2.
3.
4.
Имя файла, который подлежит обработке, должно быть входным параметром программы.
Файл должен иметь не менее 5 строк текста.
Допускается ограничить максимальную длину строки в тексте 80 символами.
Допускается (если в индивидуальном задании не оговорено другое) считать, что слова
разделяются пробелами, а знаки препинания рассматривать как буквы.
5. Программу следует разрабатывать, исходя из предположения, что весь текст из файла не
может быть размещен в оперативной памяти.
6. Допускается создавать при выполнении программы временные файлы (кроме выходного),
которые, однако, не должны сохраняться после окончания программы.
Варианты заданий:
1 В выходной файл запишите строки из исходного в алфавитном порядке. Учитывайте только
первый символ строки исходного файла.
2 Дан файл, в котором через пробел записаны натуральные числа. В выходной файл запишите
суммы цифр каждого числа.
Input.in:
23 53 987 239
Output.out: 7 8 24 15
3 В выходной файл запишите список, показывающий частоту встречаемости символов в
исходном файле. Знаки препинания и пробелы считайте отдельно.
Например:
Output.out:
a–4
b–6
…
z–9
spaces – 23
signs – 5
4 В выходной файл запишите самое короткое и самое длинное слово каждой строки. Каждая
строка выходного файла должна содержать пару <самое короткое слово> - <самое длинное
слово>
5
В каждой строке исходного файла поменять местами первое и последнее слово и записать в
выходной файл.
Например:
Input.in: Шла Саша по шоссе.
Output.out: шоссе Шла Саша по.
Подсказка: задание будет легко выполнить, если предварительно написать функцию,
выделяющую из заданной строки подстроку определенной длины, начиная с заданной
позиции. Например:
Int substr(char *src_string, char *output_string, int offset, int length_of_substring);
6
В каждой строке все слова, длина которых превышает среднюю длину слов в строке,
сократить до средней длины.
7
В каждом слове строки изменить порядок букв на противоположный.
Подсказка: Аналогично с вариантом 5, это задание легко решается с помощью функции,
возвращающей подстроку с заданной позиции
8
В выходной файл запишите самую длинную и самую короткую строку из исходного файла.
9
Во всем тексте вставить переход на новую строку там, где есть два или больше пробела
подряд. Записать в выходной файл.
10 В каждой строке файла удалить лишние пробелы между словами и вставить после знаков
препинания пробел, если их там нет. Дополнительно выведите на экран количество
удаленных пробелов.
11 Напишите программу лексического анализа исходного текста программы на Си: программа
должна проверять сбалансированность открывающих и закрывающих скобок – {, (, [. Текст в
кавычках и в комментариях можете не проверять.
В выходной файл запишите 0 при отсутствии ошибок, при наличии запишите номер строки и
позицию в ней, в которой содержится ошибка.
Подсказка: Это очень простое задание. Воспользуйтесь конструкцией switch-case и при
встрече открывающей скобки увеличивайте счетчик, а при встрече закрывающей –
уменьшайте. Соответственно, при отсутствии ошибок в файле счетчик должен быть равен
нулю в результате работы.
12 В каждой строке входного файла находится натуральное число. В выходной файл запишите
сумму чисел из исходного файла
Input.in:
2478
349
831
56
Output.out:
3714
13 В выходной файл запишите сколько раз в исходном файле встречается каждое слово виде
пары:
Output.out:
<слово 1> - k1
<слово2> - k2
<слово 3> - k3
..
<слово n> - kn
14 В выходной файл из входного записать только те строки, в которых первые три буквы
совпадают с начальными буквами последнего слова строки.
Например:
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
15 В каждой строке исходного файла удалить слова, содержащие от трех до пяти символов.
Обработанные строки запишите в выходной файл.
Download