(Если в тексте менее n строк, то последние элементы массива равны nil; в начале массива ссылок nil не должно быть. Если в операции над текстом указан номер отсутствующей строки, т. е. элемент массива с этим номером равен nil, то такая операция не выполняется.)

Используя данное представление текста, описать: процедуру вывод (Т), печатающую построчно текст Т.

Вариант №4.

1. var p, q : ↑integer; r:↑char;

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

а) r:=nil;

б) q:=p↑;

в) p↑:=nil

2. Найти ошибки в следующей программе:

program errors (input, output);

var a, b:↑integer;

begin if a=nil then read(a); a↑:=5;

new(b);read(b↑);writeln (b, b↑);

new(a);b:=a;dispose(a);b↑:=4

end.

3. Используя динамически распределяемую область памяти, составьте программу решения задачи: составьте программу вычисления функции p=(1-1/22)*(1-1/32)*…*(1-1/n2) для n>2.

а) используя механизм New, Dispose ( )

б) используя механизм Getmem ( ), Freemem ( )

4. Используя динамически распределяемую область памяти, составьте программу решения задачи: вычислить среднее геометрическое элементов натурального массива Y(20).

а) используя механизм New, Dispose ( )

б) используя механизм Getmem ( ), Freemem ( )

5*. Одно из возможных представлений «длинного» текста – это разделить его на участки (строки) равной длины и создать массив ссылок на эти строки:

const d = …; {длина строки}

n = …; {максимальное число строк}

type строка = packet array [1..d] of char;

НЕ нашли? Не то? Что вы ищете?

ссылка = ↑строка;

текст = array [1..n] of ссылка;

(Если в тексте менее n строк, то последние элементы массива равны nil; в начале массива ссылок nil не должно быть. Если в операции над текстом указан номер отсутствующей строки, т. е. элемент массива с этим номером равен nil, то такая операция не выполняется.)

Используя данное представление текста, описать: логическую функцию поиск(T, c, i, j), определяющую, входит ли литера с в текст Т, и, если входит, присваивающую параметрам i и j «координаты» первого вхождения этой литеры: i – номер строки, а j – номер позиции в этой строке

Вариант №5.

1. var p, q : ↑integer; r:↑char;

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

а) p↑:=nil;

б) r↑:=p↑;

в) q↑:=ord(r↑);

г) q:=p↑

2. type ref =↑integer;

var p, q:ref;

Пусть переменные p и q имеют значения, показанные на рисунке.

Что является значением переменной р: ссылкам на объект (переменную) целого типа или сам этот объект? Что обозначает переменная р↑: ссылку на объект целого типа, сам этот объект или целое 5? Каковы типы переменных р и р↑?

3. Используя динамически распределяемую область памяти, составьте программу решения задачи: вычислить сумму s=1/n3 для n=1,2,3,..,40.

а) используя механизм New, Dispose ( )

б) используя механизм Getmem ( ), Freemem ( )

4. Используя динамически распределяемую область памяти, составьте программу решения задачи: вычислить и запомнить сумму и число положительных элементов каждого столбца матрицы A(10,15). Результаты отпечатать в виде двух строк.

а) используя механизм New, Dispose ( )

б) используя механизм Getmem ( ), Freemem ( )

5*. Одно из возможных представлений «длинного» текста – это разделить его на участки (строки) равной длины и создать массив ссылок на эти строки:

const d = …; {длина строки}

n = …; {максимальное число строк}

type строка = packet array [1..d] of char;

ссылка = ↑строка;

текст = array [1..n] of ссылка;

(Если в тексте менее n строк, то последние элементы массива равны nil; в начале массива ссылок nil не должно быть. Если в операции над текстом указан номер отсутствующей строки, т. е. элемент массива с этим номером равен nil, то такая операция не выполняется.)

Используя данное представление текста, описать: функцию число строк(Т) для подсчёта числа строк в тексте Т.

Вариант №6.

1. var p, q : ↑integer; r:↑char;

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

а) p↑:=nil;

б) r↑:=p↑;

г) q:=p↑

2. type ref =↑integer;

var p, q:ref;

Пусть переменные p и q имеют значения, показанные на рисунке.

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

p↑:=q↑;

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

if p=q then q↑:=4;

writeln(p↑)

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

y= sin 1+ sin 1.1 + sin 1.2 + ..+sin 2.

а) используя механизм New, Dispose ( )

б) используя механизм Getmem ( ), Freemem ( )

4. Используя динамически распределяемую область памяти, составьте программу решения задачи: вычислить среднее геометрическое элементов натурального массива Y(20).

а) используя механизм New, Dispose ( )

б) используя механизм Getmem ( ), Freemem ( )

5*. Одно из возможных представлений «длинного» текста – это разделить его на участки (строки) равной длины и создать массив ссылок на эти строки:

const d = …; {длина строки}

n = …; {максимальное число строк}

type строка = packet array [1..d] of char;

ссылка = ↑строка;

текст = array [1..n] of ссылка;

(Если в тексте менее n строк, то последние элементы массива равны nil; в начале массива ссылок nil не должно быть. Если в операции над текстом указан номер отсутствующей строки, т. е. элемент массива с этим номером равен nil, то такая операция не выполняется.)

Используя данное представление текста, описать: логическую функцию элем(T,I,j,c), проверяющую есть ли в тексте Т строка с номером i, и, если есть, присваивающую j-ю литеру этой строки параметру с.

Вариант №7.

1.var p, q :↑integer; r:↑char;

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

а) r↑:=p↑;

б) q↑:=ord(r↑);

в) p↑:=nil;

2. Имеется программа

program dynamic (output);

var x: ↑boolean; y:Boolean;

begin {A} new(x);{B} x↑:=true; y:=not x↑;

{C} dispose(x);{D}writeln(y)

end.

Какие переменные существуют в каждой из точек А, В, С, D и каковы их значения в эти моменты?

3. Используя динамически распределяемую область памяти, составьте программу решения задачи: вычислить значение функции y=

а) используя механизм New, Dispose ( )

б) используя механизм Getmem ( ), Freemem ( )

4. Используя динамически распределяемую область памяти, составьте программу решения задачи: найти в каждой строке матрицы P (N, N),N<=15, наибольший элемент и поменять его местами с элементом главной диагонали. Отпечатать полученную матрицу в общепринятом виде.

а) используя механизм New, Dispose ( )

б) используя механизм Getmem ( ), Freemem ( )

5*. Одно из возможных представлений «длинного» текста – это разделить его на участки (строки) равной длины и создать массив ссылок на эти строки:

const d = …; {длина строки}

n = …; {максимальное число строк}

type строка = packet array [1..d] of char;

ссылка = ↑строка;

текст = array [1..n] of ссылка;

(Если в тексте менее n строк, то последние элементы массива равны nil; в начале массива ссылок nil не должно быть. Если в операции над текстом указан номер отсутствующей строки, т. е. элемент массива с этим номером равен nil, то такая операция не выполняется.)

Используя данное представление текста, описать: процедуру перестановка (Т, i, j), меняющую местами i-ю и j-ю текста Т.

Вариант №8.

1. var p, q : ↑integer; r:↑char;

Верен ли оператор и почему?

if r < > nil then r↑:=nil

2. Имеется программа

program dynamic (output);

var x: ↑boolean; y:Boolean;

begin {A} new(x);{B} x↑:=true; y:=not x↑;

{C} dispose(x);{D}writeln(y)

end.

Почему объекты (переменные), создаваемые процедурой new и уничтожаемые процедурой dispose, называют динамическими? Почему им не дают имена?

3. Используя динамически распределяемую область памяти, составьте программу решения задачи: составьте программу вычисления (1+2)*(1+2+3)*…*(1+2+…+10).

а) используя механизм New, Dispose ( )

б) используя механизм Getmem ( ), Freemem ( )

4. Используя динамически распределяемую область памяти, составьте программу решения задачи: вычислить и запомнить сумму и количество положительных элементов каждого столбца матрицы C(10X15). Результаты отпечатать в виде двух строк.

а) используя механизм New, Dispose ( )

б) используя механизм Getmem ( ), Freemem ( )

5*. Одно из возможных представлений «длинного» текста – это разделить его на участки (строки) равной длины и создать массив ссылок на эти строки:

const d = …; {длина строки}

n = …; {максимальное число строк}

type строка = packet array [1..d] of char;

ссылка = ↑строка;

текст = array [1..n] of ссылка;

(Если в тексте менее n строк, то последние элементы массива равны nil; в начале массива ссылок nil не должно быть. Если в операции над текстом указан номер отсутствующей строки, т. е. элемент массива с этим номером равен nil, то такая операция не выполняется.)

Используя данное представление текста, описать: процедуру замена (Т, i, j), заменяющую i-ю строку текста Т на копию j-й строки.

Вариант №9.

1. var p, q :↑integer; r:↑char;

Верен ли оператор и почему?

if q > nil then q↑:=p↑

2. Имеется программа

program dynamic (output);

var x: ↑boolean; y:Boolean;

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14