- •Введение
- •1. Вычисление функций
- •Пояснения к программе
- •Пояснения к программе
- •2. Одномерные массивы
- •3. Матрицы
- •Пояснения к программе
- •4. Обработка текстов
- •Пояснения к программе
- •Пояснения к программе
- •5. Процедуры и функции
- •Пояснения к программе
- •Пояснения к программе
- •Пояснения к программе
- •6. Перечисляемый и диапазонный типы
- •Пояснения к программе
- •7. Записи
- •8. Множества
- •9. Файлы
- •10. Списки
- •Пояснения к программе
- •Пояснения к программе
- •Литература
- •Приложение 1 Комбинации клавиш управления в среде Turbo Pascal
- •Приложение 2 Сообщения об ошибках периода компиляции
- •1. Вычисление функций 5
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 задаются пользователем.
Пусть в файле фамилий family находятся фамилии студентов (одна запись — одна фамилия), в файле оценок note — в том же порядке оценки студентов (одна запись — массив оценок одного студента). Записи упорядочены по номеру студента. Распечатайте список фамилий студентов, получающих стипендию, то есть сдавших сессию на «хорошо» и «отлично».