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

15. Текстовые файлы Часть I

  1. Эквиваленты ли типы text и file of char? Одинаковы ли длины строк в файле? Допустимы ли пустые строки?

  2. var k: integer;

t: text;

Допустимы ли операторы:

read(t, k); write(t, k);

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

  2. Напишите процедуру Compress(f1,f2), переписывающую содержимое файла f1 в f2, но без пустых строк.

  3. Напишите функцию Max(f) для нахождения максимального из вещественных чисел, записанных в текстовом файле test.txt.

Часть II

  1. Напишите функцию, которая:

    1. Находит количество пустых строк в файле

    2. Находит максимальную длину строк в файле

    3. Находит количество непустых строк в файле

    4. Находит количество строк в файле, содержащих четное количество литер

    5. Находит количество строк в файле, начинающихся с буквы "v"

    6. Находит количество строк в файле, заканчивающихся буквой "d"

    7. Находит количество строк в файле, состоящих из одинаковых литер

    8. Находит количество строк в файле, начинающихся и заканчивающихся одной и той же литерой

    9. Находит минимальную длину строк в файле

    10. Определяет, сколько раз в файле встретилось слово "begin"

    11. Определяет, сколько раз в файле встретилось слово "end"

    12. Определяет, сколько раз в файле встречались пятибуквенные слова

    13. Определяет, сколько раз в файле встречались слова – палиандромы

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

  2. Напишите процедуру:

    1. AlignLeft(f), которая переформатирует файл f так, что все строки в нем будут выровнены по левому краю

    2. AlignRight(f), которая переформатирует файл f так, что все строки в нем будут выровнены по правому краю (ширина строки равна константе Width = 80)

    3. AlignCenter(f), которая переформатирует файл f так, что все строки в нем будут выровнены симметрично по центру (ширина строки равна константе Width = 80)

    4. Upper(f), которая переформатирует файл f так, что все строки в нем будут содержать только прописные (заглавные) буквы

    5. Lower(f), которая переформатирует файл f так, что все строки в нем будут содержать только строчные буквы

    6. SeekConstant(f), которая находит в файле, содержащем текст программы на Паскале, идентификаторы констант

    7. SeekVar(f), которая находит в файле, содержащем текст программы на Паскале, идентификаторы переменных

16. Ссылочные типы Часть

  1. type ref = ^integer;

var p, q: ref;

Пусть переменные p и q имеют значения, показанные на рисунке. Ответить на следующие вопросы:

    1. Что является значением переменной p: ссылка на объект (переменную) целого типа или сам этот объект?

    2. Что обозначает переменная p^: ссылку на объект целого типа, сам этот объект или число 5?

    3. Каковы типы переменных p и p^?

    4. Что будет выведено на печать в результате выполнения следующих операторов?

p^:=q^;

if p=q then p:=nil else if p^=q^ then q:=p;

if p=q then q^:=4;

WriteLn(p^,q^);

  1. type D = record

a: boolean;

b,c: ^real;

end;

var r: ^D;

Пусть переменная r имеет значение, показанное на рисунке Нарисовать структуру значения переменной r после выполнения следующих операторов:

if r^.b<>nil then r^.c:=r^.b;

r^.b^:=r^.c^-1.4;

r^.a:=r^.b=r^.c;

  1. var p,q: ^integer;

r: ^char;

Какие из следующих операторов неправильные и почему?

    1. p:=q;

    1. q:=p^;

    1. if r<>nil then r^:=nil^;

    1. q:=r;

    1. p^:=nil;

    1. if q>nil then q^:=p^;

    1. p:=nil;

    1. r^:=p^;

    1. if q=p then write(q);

    1. r:=nil;

    1. q^:=ord(r^);

    1. if q<>r then read(r^);

  1. type A = ^char;

B = record

f1: char;

f2 : A;

end;

var p: ^B;

q: A;

Нарисовать структуру значений переменных p и q после выполнения следующих операторов:

new(q); q^:='7';

new(p); p^.f1:=succ(q^); p^.f2:=q;

  1. type chain = ^elem;

elem = record

data : integer;

link : chain;

end;

var p, q: chain;

Нарисовать структуру значений переменной p после выполнения операторов:

    1. new(p); p^.data:=4; p^.link:=nil;

    2. new(p); p^.data:=7; p^.link:=p;

    3. new(q); q^.data:=2; q^.link:=nil;

new(p); p^.data:=1; p^.link:=q;

    1. new(p); p^.data:=6; new(p^.link); p^.link^:=p^;

  1. Описать переменную p (и, если надо, вспомогательные переменные) и выписать операторы, присваивающие ей указанные значения

  2. Выписать операторы, которые преобразуют значение переменной p следующим образом.

И сходное состояние:

  1. type ref = ^real;

vector = array[1..10] of ref;

Напишите процедуру Input(x), считывающую числа с устройства Con и помещающую их в кучу (адреса будут хранится в элементах вектора x). Напишите процедуру Output(x), выводящую на устройство Con числа, которые расположены по адресам, хранящимся в элементах вектора x.