- •Лабораторная работа №1. Конструирование, анализ кода и отладка программ в интегрированной среде программирования Turbo Pascal.
- •1 Порядок выполнения
- •2 Содержание отчета
- •Сортировка выбором.
- •Сортировка обменом («Пузырьковая сортировка»)
- •Двоичный поиск (или бинарный, или поиск делением пополам)
- •Работа с двумерными массивами (матрицами)
- •Сортировка вставкой.
- •Сортировка выбором.
- •Сортировка обменом («Пузырьковая сортировка»)
- •Двоичный поиск (или бинарный, или поиск делением пополам)
- •Работа с двумерными массивами (матрицами)
- •Сортировка вставкой.
- •Сортировка выбором.
- •Сортировка обменом («Пузырьковая сортировка»)
- •Двоичный поиск (или бинарный, или поиск делением пополам)
- •Работа с двумерными массивами (матрицами)
Сортировка выбором.
Принцип метода:
Находим (выбираем) в массиве элемент с минимальным значением на интервале от 1-го до n-го (последнего) элемента и меняем его местами с первым элементом. На втором шаге находим элемент с минимальным значением на интервале от 2-го доn–го элемента и меняем его местами со вторым элементом. И т.д. до n-1-го.
Program SelectionSort;
uses Crt;
const n=20; {длина массива}
type
TVector=array[1..n]of Real;
TStudentCard = record
SurName : String20; {Фамилия}
Name : String20; {Имя}
FatherName : String20; {Отчество}
Year : Integer; {Год рождения}
HomeAddress: String; {Домашний адрес}
GroupCode : String7; {Шифр группы}
Marks : Tmarks; {Оценки за последний семестр}
end;
Tgroup = array[1..20] of TStudentCard;
var
Vector :TVector;
Min :Real;
Imin,S,i :Integer;
GroupRPZ_10_02,
GroupRPZ_09_01 : Tgroup;
begin
ClrScr;
GroupRPZ_10_02[1].SurName := 'Vakulanko';
GroupRPZ_10_02[1].Marks.Prog := 3;
GroupRPZ_10_02[1].Marks.Philosofy := 5;
GroupRPZ_10_02[1].SurName := 'Danchenko';
GroupRPZ_10_02[1].Marks.Prog := 3;
GroupRPZ_10_02[1].Marks.Philosofy := 3;
GroupRPZ_10_02[1].SurName := 'Kuznesov';
GroupRPZ_10_02[1].Marks.Prog := 3;
GroupRPZ_10_02[1].Marks.Philosofy := 4;
Writeln('Введите элементы массива');
for i:=1 to n do Read(Vector[i]); Readln;
{---------------------------------------------}
for s:=1 to n-1 do
begin
{Поиск минимального элемнта в диапазоне от s-го элемента до n-го}
Min:=Vector[s];
Imin:=S;
for i:=S+1 to n do
if Vector[i]<Min then
begin
Min:=Vector[i];
Imin:=i
end;
{Обмен местами минимального и s-го элемента}
Vector[Imin:=Vector[s];
Vector[s]:=Min;
end;
{----------------------------------------------}
Writeln('Отсортированный массив');
for i:=1 to n do Write(Vector[i]:8:2);
Writeln;
end.
ВАРИАНТ №13
Сортировка обменом («Пузырьковая сортировка»)
Принцип метода:
Слева направо поочередно сравниваются два соседних элемента и, если их взаиморасположение не соответствует заданному условию упорядоченности, то они меняются местами. Далее берутся два следующих соседних элемента и так далее до конца массива.
После одного такого прохода на последней n-й позиции массива будет стоять максимальный элемент («всплыл» первый «пузырек»). Поскольку максимальный элемент уже стоит на своей последней позиции, то второй проход обменов выполняется доn-1-го элемента. Всего требуетсяn-1 проход.
Program BubbleSort;
uses Crt;
const n=20; {Длина массива}
type
TVector=array[1..n] of Real;
TStudentCard = record
SurName : String20; {Фамилия}
Name : String20; {Имя}
FatherName : String20; {Отчество}
Year : Integer; {Год рождения}
HomeAddress: String; {Домашний адрес}
GroupCode : String7; {Шифр группы}
Marks : Tmarks; {Оценки за последний семестр}
end;
Tgroup = array[1..20] of TStudentCard;
var
Vector:TVector;
B :Real;
i,k :Integer;
GroupRPZ_10_02,
GroupRPZ_09_01 : Tgroup;
begin
ClrScr;
GroupRPZ_10_02[1].SurName := 'Vakulanko';
GroupRPZ_10_02[1].Marks.Prog := 3;
GroupRPZ_10_02[1].Marks.Philosofy := 5;
GroupRPZ_10_02[1].SurName := 'Danchenko';
GroupRPZ_10_02[1].Marks.Prog := 3;
GroupRPZ_10_02[1].Marks.Philosofy := 3;
GroupRPZ_10_02[1].SurName := 'Kuznesov';
GroupRPZ_10_02[1].Marks.Prog := 3;
GroupRPZ_10_02[1].Marks.Philosofy := 4;
Writeln('Введите элементы массива');
for i:=1 tj n do Read(Vector[i]); Readln;
{---------------------------------------------}
for k:=n downto 2 do
{"Всплывание" очередного максимального элемента - "пузырька" на k-ю позицию}
for i:=1 tj k-1 do
if Vector[i]>Vector[i+1] then
begin
B:=Vector[i];
Vector[i]:=Vector[i+1];
Vector[i+1]:=И
end;
{--------------------------------------------}
Writeln('Отсортированный массив');
for i:=1 tj n do Write(Vector[i]:8:2);
Writeln;
end.
ВАРИАНТ №14