46256 (Ссылочные типы. Динамические переменные), страница 4
Описание файла
Документ из архива "Ссылочные типы. Динамические переменные", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "46256"
Текст 4 страницы из документа "46256"
ServiceVar: Assoc1;
begin
ServiceVar:= Tree;
writeln( ServiceVar^.Elem );
if ServiceVar^.Right <> nil then PrintTree(ServiceVar^.Right);
if ServiceVar^.Left <> nil then PrintTree(ServiceVar^.Left);
end;
Разберем решение типичной задачи, связанной с обработкой двоичных деревьев.
Текст задания
Описать процедуру copy( T, T1) которая строит T1 √ копию дерева T.
Решение
procedure CopyTree( T: Tree; var T1: Tree );
begin
if T= nil then T1:= nil
else
begin
new( T1 );
T1^.Elem:= T^.Elem;
CopyTree( T^.Left, T1^.Left );
CopyTree( T^.Right, T1^.Right )
end
end;
Глава II. Практическая часть
1-Задача 1. Программа «Калькулятор»
Постановка задачи. Составить программу калькулятор.
Листинг программы
program Kalkulator;
var
M:array[1..50] of string;
j,i,n:integer;
s,s1,s2,s3:string;
x,y:real;
begin
writeln('BBeDi OPeRAciy');
readln(s);
n:=length(s);
for i:=0 to n-1 do
begin
M[i]:=copy(s,i,1);
if (m[i]='+')or(m[i]='-')or(m[i]='*')or(m[i]='/') then j:=i;
end;
s1:=copy(s,0,j-1);
s2:=copy(s,j,1);
s3:=copy(s,j+1,n);
val(s1,x,n);
val(s3,y,n);
if s2='+' then writeln(x+y:4:1);
if s2='-' then writeln(x-y:4:1);
if s2='*' then writeln(x*y:4:1);
if s2='/' then writeln(x/y:4:1);
readln;
end.
Блок-схема
Пояснение к блок-схеме
№ блока | Назначение |
1 | Начало программы |
2 | Ввод/вывод данных |
3 | Выполнение операции N:=length(s) |
4 | Цикл i:=0 to n-1 |
5 | Тело цикла, выполнение операции M[i]:=copy(s,i,1) |
6 | Тело цикла, условие (m[i]=’+’) or (m[i]=’-‘) or (m[i]=’*’) or m[i]=’/’) |
7 | Тело цикла выполнение операции j:=i |
8 | Выполнение операции s1:=copy (s,o,j-1); s2:=copy (s,j,1); s3:=copy (s,j+1,n) |
9 | Выполнение операции val(s1,x,n); val(s3,y,n) |
10 | Блок условия s2=’+’ |
11 | Ввод/вывод данных x+y |
12 | Блок условия s2=’-‘ |
13 | Ввод/вывод данных x-y |
14 | Блок условия s2=’*’ |
15 | Ввод/вывод данных x*y |
16 | Блок условия s2=’/’ |
17 | Ввод/вывод данных x/y |
18 | Конец программы |
Протокол программы
BBeDi OPeRaciy
56*9
504,0
2-Задача2. Выполнить сортировку по латинскому алфавиту
Постановка задачи. Составить программу которая, сортирует буквы латинского алфавита по алфавиту.
Листинг программы
program Alfavit;
var
M:array[1..50] of string;
j,i,n:integer;
b:boolean;
s,tmp:string;
begin
writeln('BBeDu TekcT');
readln(s);
n:=length(s);
for i:=0 to n-1 do
begin
M[i]:=copy(s,i,1);
end;
b:=true;
while b do
begin
b:=false;
for i:=1 to n-1 do
begin
if m[i] > m[i+1] then
begin
tmp:= m[i];
m[i]:=m[i+1];
m[i+1]:=tmp;
b:=true;
end;
end;
end;
for i:=0 to n-1 do begin;
write(m[i],' ');
end;
readln;
end.
Блок-схема
Пояснение к блок-схеме
№ блока | Назначение |
1 | Начало программы |
2 | Ввод/вывод данных n:=length(s) |
3 | Цикл i:=0 to n-1 |
4 | Тело цикла M:=copy(s,i,1) |
5 | Выполнение операции b:=true |
6 | Выполнение операции b:=false |
7 | Цикл i:=1 to n-1 |
8 | Тело цикла, условие m[i]>m[i+1] |
9 | Выполнение операции tmp:=m[i]; m[i]:=m[i+1]; m[i+1]:=tmp; b:=true |
10 | Цикл i:=o to n-1 |
11 | Ввод/вывод данных m[i] |
12 | Конец программы |
Протокол программы
BBeDu TekcT
abrakadabra
aaaaabbdkr
Приложения
Р ис. 1. Линейный список (связанный список)
Рис. 2. Двунаправленный список
Рис. 3. Однонаправленный циклический список.
Рис. 4. Двунаправленный циклический список.
Рис. 5. Организация дека на основе линейного списка.
Рис. 6. Организация стека на основе линейного списка.
Рис. 7. Представление бинарного дерева в виде списковой структуры.
Список литературы
Рапаков Г. Г. и Ржецукая С. Ю.. Turbo Pascal для студентов и школьников. BHV – С.-Петербург 2004
Меженный О. А. Turbo Pascal: учитель программирования. Диалектива 2001.
Культин Н.. Программирование в Turbo Pascal и Delphi. BHV 2003
Фаронов В. В. Turbo Pascal: учебное пособие. BHV 2006
Для подготовки данной работы были использованы материалы с сайта http://referat.ru/