Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ЛАБОРАТОРНАЯ РАБОТА № 8
ЦЕЛЬ РАБОТЫ: рассмотреть использование и преимущества динамических переменных при решении задач, связанных с обработкой больших объемов информации.
ОБРАЗЕЦ РЕШЕНИЯ ЗАДАЧИ
ЗАДАЧА
Сформировать односвязанный список и вывести его на печать.
АНАЛИЗ ПОСТАНОВКИ ЗАДАЧИ
Алгоритм:
Выходные данные:
Односвязанный список
РЕШЕНИЕ
Модуль 1 содержащий описания используемые, как в основной программе так и в других модулях
unit op;
interface
type bond=^link;
link=record
data:byte;
ads :bond;
end;
implementation
end.
Модуль 2 содержащий функции обработки данных
unit obrabotki;
interface
uses op;
procedure put_in(var ptr1, ptr2:bond;elem1:byte);
procedure put(var ptr1:bond;elem1:byte);
procedure print(var tr:bond);
implementation
{формирование первого элемента списка, с запоминанием начала списка}
procedure put_in;
var temp:bond;
begin
new(temp);
temp^.ads:=nil;
temp^.data:=elem1;
ptr1:=temp;
ptr2:=temp
end;
{формирование списка элементов}
procedure put;
var temp:bond;
begin
new(temp);
temp^.ads:=nil;
temp^.data:=elem1;
ptr1^.ads:=temp;
ptr1:=temp
end;
{печать списка элементов}
procedure print;
var temp:bond;
begin
while tr^.ads<>nil do
begin
write('elem= ');
writeln(tr^.data);
tr:=tr^.ads
end
end;
end.
Основная программа
Var elem :integer;
ptr,top :bond;
d :char;
uses
op, obrabotki;
begin
ptr:=nil;
top:=nil;
d:='y';
readln(elem);
put_in(ptr, top, elem);
while d='y' do
begin
writeln('Введите одно значение');
readln(elem);
put(ptr,elem);
writeln('Будете вводить еще элементы, если да 'y');
readln(d);
end;
print(top);
end.
ЗАДАНИЯ ДЛЯ САМОСТОЯТЕЛЬНОГО ВЫПОЛНЕНИЯ:
Вариант 1.
const d =...; {Д л и н а строки}
n =...; {Максимальное число строк}
type stroka = Array [1..d] of Char;
Ref = ^stroka;
tekst = Array [1..n] of Ref;
Если текст содержит менее n строк, то последние элементы массива равны Nil. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равен Nil, то такая операция не выполняется. Используя данное представление текста, описать: процедуру З_а_м_е_н_а (T,i,j), заменяющую i-ю строку текста T на копию j-й строки.
Вариант 2.
const d =...; {Д л и н а строки}
n =...; {Максимальное число строк}
type stroka = Array [1..d] of Char;
Ref = ^stroka;
tekst = Array [1..n] of Ref;
Если текст содержит менее n строк, то последние элементы массива равны Nil. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равен Nil, то такая операция не выполняется. Используя данное представление текста, описать логическую функцию Э_л_е_м (T,i,j,c), проверяющую, есть ли в тексте T строка с номером i, и, если есть, присваивающую j-ю литеру этой строки параметру c.
Вариант 3.
const d =...; {Д л и н а строки }
n =...; {Максимальное число строк}
type stroka = Array [1..d] of Char;
Ref = ^stroka;
tekst = Array [1..n] of Ref;
Если текст содержит менее n строк, то последние элементы массива равны Nil. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равен Nil, то такая операция не выполняется.
Используя данное представление текста, описать: процедуру П_е_р_е_с_т_а_н_о_в_к_а (T,i,j), меняющую местами i-ю и j-ю строки текста T.
Вариант 4.
const d =...; { Д л и н а строки }
n =...; { Максимальное число строк }
type stroka = Array [1..d] of Char;
Ref = ^stroka;
tekst = Array [1..n] of Ref;
Если текст содержит менее n строк, то последние элементы массива равны Nil. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равен Nil, то такая операция не выполняется. Используя данное представление текста, описать процедуру Д_о_б_а_в_и_т_ь (T,i,j),добавляющую после i-й строки текста T копию j-й строки.
Вариант 5.
const d =...; { Д л и н а строки }
n =...; { Максимальное число строк }
type stroka = Array [1..d] of Char;
Ref = ^stroka;
tekst = Array [1..n] of Ref;
Если текст содержит менее n строк, то последние элементы массива равны Nil. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равен Nil, то такая операция не выполняется.
Используя данное представление текста, описать логическую функцию П_о_и_с_к (T,c,i,j), определяющую, входит ли литера c в текст T, и, если входит, присваивающую параметрам i и j "координаты" первого вхождения этой литеры: i - номер строки, а j - номер позиции в этой строке.
Вариант 6.
const d =...; {Д л и н а строки}
n =...; {Максимальное число строк}
type stroka = Array [1..d] of Char;
Ref = ^stroka;
tekst = Array [1..n] of Ref;
Если текст содержит менее n строк, то последние элементы массива равны Nil. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равен Nil, то такая операция не выполняется. Используя данное представление текста, описать: процедуру З_а_м_е_н_а (T,i,j), заменяющую i-ю строку текста T на копию j-й строки.
Вариант 7.
1. Добавить элемент в список после элемента, на который указывает P.
2. Опишите процедуру, которая формирует список L, включив в него по одному разу элементы, которые: входят одновременно в оба списка L1 и L2.
3. Одно из возможных представлений "д л и н н о г о" текста - это разделить его на участки (строки) равной длины и создать массив ссылок на эти строки:
const d =...; { Д л и н а строки }
n =...; { Максимальное число строк }
type stroka = Array [1..d] of Char;
Ref = ^stroka;
tekst = Array [1..n] of Ref;
Если текст содержит менее n строк, то последние элементы массива равны Nil. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равен Nil, то такая операция не выполняется.
Используя данное представление текста, описать логическую функцию П_о_и_с_к (T,c,i,j), определяющую, входит ли литера c в текст T, и, если входит, присваивающую параметрам i и j "координаты" первого вхождения этой литеры: i - номер строки, а j - номер позиции в этой строке.
Вариант 8.
1. Удалить элемент из произвольного места списка, отличного от начала.
2. Опишите процедуру, которая формирует список L, включив в него по одному разу элементы, которые: входят в список L1, но не входят в список L2.
3. Одно из возможных представлений "длинного" текста - это разделить его на участки (строки) равной длины и создать массив ссылок на эти строки:
const d =...; {Д л и н а строки}
n =...; {Максимальное число строк}
type stroka = Array [1..d] of Char;
Ref = ^stroka;
tekst = Array [1..n] of Ref;
Если текст содержит менее n строк, то последние элементы массива равны Nil. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равен Nil, то такая операция не выполняется. Используя данное представление текста, описать логическую функцию Э_л_е_м (T,i,j,c), проверяющую, есть ли в тексте T строка с номером i, и, если есть, присваивающую j-ю литеру этой строки параметру c.
Вариант 9.
1. Добавить элемент в начало списка.
2. Опишите процедуру, изменения порядка элементов списка на противоположный порядок.
3. Одно из возможных представлений "д л и н о г о" текста - это разделить его на участки (строки) равной длины и создать массив ссылок на эти строки:
const d =...; {Д л и н а строки}
n =...; {Максимальное число строк}
type stroka = Array [1..d] of Char;
Ref = ^stroka;
tekst = Array [1..n] of Ref;
Если текст содержит менее n строк, то последние элементы массива равны Nil. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равен Nil, то такая операция не выполняется. Используя данное представление текста, описать: процедуру З_а_м_е_н_а (T,i,j), заменяющую i-ю строку текста T на копию j-й строки.
Вариант 10.
1. Добавить элемент в список после элемента, на который указывает P.
2. Опишите процедуру, которая формирует список L, включив в него по одному разу элементы, которые: входят хотя бы в один из списков L1 и L2.
3. Одно из возможных представлений "д л и н н о г о" текста - это разделить его на участки (строки) равной длины и создать массив ссылок на эти строки:
const d =...; { Д л и н а строки }
n =...; { Максимальное число строк }
type stroka = Array [1..d] of Char;
Ref = ^stroka;
tekst = Array [1..n] of Ref;
Если текст содержит менее n строк, то последние элементы массива равны Nil. Если в операции над текстом указан номер отсутствующей строки, т.е. элемент массива с этим номером равен Nil, то такая операция не выполняется.
Используя данное представление текста, описать логическую функцию П_о_и_с_к (T,c,i,j), определяющую, входит ли литера c в текст T, и, если входит, присваивающую параметрам i и j "координаты" первого вхождения этой литеры: i - номер строки, а j - номер позиции в этой строке.
ТРЕБОВАНИЯ К ВЫПОЛНЕНИЮ ЛАБОРАТОРНОЙ РАБОТЫ:
ОТЧЕТ ДОЛЖЕН СОДЕРЖАТЬ: