Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Задачник с исправлением.doc
Скачиваний:
55
Добавлен:
08.05.2015
Размер:
922.62 Кб
Скачать

9. Файлы

9.1 Написать программу triangle, формирующую текстовый файл из 9 строк, в первой из которых — одна цифра '1', во второй — две цифры '2', … , в девя­той — девять цифр '9'.

program Triangle;

Var

F : Text; { файловая переменная }

D : Char; { параметр внешнего цикла по числу строк }

C : Char; { параметр внутр. цикла по цифрам в строке}

St : String[80]; { переменная для работы со строками }

Begin

{ создание файла }

Assign ( F, 'Triangle.txt' );

ReWrite ( F );

for D := '1' to '9' do

Begin

for C := '1' to D do

Write ( F, D );

WriteLn ( F )

end;

Close ( F );

{ чтение и вывод сформированного файла }

ReSet ( F );

WriteLn ( 'Содержимое сформированного файла' );

while Not EOF ( F ) do

begin

ReadLn ( F, St );

WriteLn ( St )

end;

Close ( F )

end.

9.2 Пусть в программе введено описание типа:

Type

Letters = file of char;

Описать процедуру:

a) add1(f,c), добавляющую литеру с в начало текста f;

б) addlast(f,c), добавляющую литеру с в конец текста f;

в) double(f), удваивающую (т.е. повторяющую) в тексте f каждую цифру;

г) replace(f,c), заменяющую последнюю литеру непустого текста f на литеру с;

д) next(f), заменяющую в тексте f каждую цифру на следующую по величине цифру ('9' заменять на '0');

е) delete(f), удаляющую из текста f все знаки '+' и '–';

ж) del(f), удаляющую из текста f предпоследний эле­мент, если такой есть;

з) firsts(f), оставляющую в тексте f только первые вхождения каждой литеры.

9.3 Описать процедуру Line40(f), которая считывает из входного файла литеры до первой точки и записывает их (без точки) в текстовый файл f, формируя в нем строки по 40 литер (в последней строке литер может быть и меньше).

9.4 Описать функцию, которая:

а) подсчитывает количество пустых строк в текстовом файле f;

б) находит максимальную длину строк текстового файла f.

9.5 Описать процедуру printlines(f), печатающую построчно содержимое текстового файла f.

9.6 Пусть текстовый файл f разбит на непустые строки. Описать функцию count(f) для подсчета числа строк, которые:

а) начинаются с буквы 'd';

б) оканчиваются буквой 'z';

в) начинаются и оканчиваются одной и той же литерой;

г) состоят из одинаковых литер.

9.7Пусть дан текстовый файл. Для каждой строки распечатайте слово наиболь­шей длины. Если их несколько, то распечатайте все.

9.8 Пусть дан текстовый файл. Распечатайте строку с заданным номером.

9.9 Пусть дан текстовый файл. Удалите строку с заданным номером. Если строки с указанным номером нет, сообщите об этом.

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

9.11 Пусть дан текстовый файл. Распечатайте все строки, начинающиеся с задан­ного слова.

9.12 Пусть дан текстовый файл. Распечатайте все строки, оканчивающиеся за­данным словом.

9.13 Пусть дан текстовый файл. Найдите строку максимальной длины.

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

9.15 Пусть дан текстовый файл. Определите, сколько строк файла имеют длину, большую, равную и меньшую, чем заданное значение k.

9.16 Пусть дан текстовый файл. Создайте два выходных файла: в один перепи­шите из каждой строки первые р слов (р задается вводом), в другой — остав­шиеся. Если в строке меньше чем р слов, то во втором файле соответствую­щая строка должна быть пустой.

9.17 Пусть даны файлы, созданные по условию предыдущего задания. Выполни­те объединение двух файлов: из соответствующих двух строк входных фай­лов получите одну строку выходного файла.

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

9.19 Пусть дан текстовый файл. Напечатайте первое из слов, в котором наиболь­шее число различных букв. Если длина слова больше 20, то распечатайте пер­вые 20 букв.

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

9.21 Пусть дан текстовый файл. Для каждой строки распечатайте слово с номе­ром (п + 1) div 2, где п — количество слов в строке.

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

9.23 Пусть дан текстовый файл. Максимальная длина слов в этом файле равна пяти символам. Создайте пять файлов. Каждой строке входного файла соот­ветствует одна строка в каждом из пяти файлов, в которые переписаны через пробел слова соответствующей длины: в первом файле — слова длины 1, во втором — слова длины 2 и т. д. Если слов длины k нет, то соответствующая строка k-го должна быть пустой.

9.24 Пусть даны два текстовых файла. Определите, равны ли они. Равенство по­нимается в смысле совпадения соответствующих символов и одинакового деления на строки.

9.25 Пусть дан текстовый файл. Заменить последовательность Р1 подряд идущих символов последовательностью Р2. Последовательности Р1 и Р2 задаются пользователем.

    1. Пусть в файле фамилий family находятся фамилии студентов (одна запись — одна фамилия), в файле оценок note — в том же порядке оценки студентов (одна запись — массив оценок одного студента). Записи упо­рядочены по номеру студента. Распечатайте список фамилий студентов, по­лучающих стипендию, то есть сдавших сессию на «хорошо» и «отлично».