Function имя_функции(параметры);Forward;
Позже, в необходимых местах, описываются сами процедуры или функции в обычном виде и в их заголовке параметры уже указывать не нужно.
Например: процедура с именем А вызывает процедуру с именем В, а процедура В, в свою очередь, вызывает процедуру А.
Procedure A(y:тип);Forward; {Опережающее описание процедуры А}
Procedure B(x:тип); { Заголовок процедуры В}
. . . {Раздел описаний процедуры В}
begin
. . .
A(p); {Вызов процедуры А из В}
. . .
end;
Procedure A; {Основное описание процедуры А}
. . . {Раздел описаний процедуры А}
Begin
. . .
B(g); {Вызов процедуры В из А}
. . .
End;
Лабораторная работа №9
Цель работы: Преобрести навыки разработки программ с использованием функций, представленных в теоретической части.
Типовое задание
Составить программу, максимально используя для вычисления заданных выражений, подпрограммы типа FUNCTION.
Варианты заданий
1. 2.
3. 4.
5. 6.
7. 8.
9. 10.
11. 12.
13. 14.
15. 16.
17. 18.
19. 20.
Примечание: При разработке программ не забывайте анализировать область допустимых значений функций.
17. Задача сортировки: алгоритмы и программы
Сортировка данных при решении задач на ЭВМ занимает значительную часть времени. В настоящее время разработано большое число алгоритмов сортировки (упорядочения), отличающихся друг от друга различными признаками: сложностью алгоритма, временем решения, затратами памяти ЭВМ, числом сортируемых элементов, до какой степени элементы уже отсортированы, где располагаются сортируемые данные: во внешней памяти (например, на диске) или в оперативной памяти. Очевидно, что с отсортированными данными работать легче, чем с произвольно расположенными данными. Когда элементы отсортированы, их проще найти или определить, что их нет среди данных.
Наиболее простыми алгоритмами сортировки считаются алгоритмы, известные в литературе под названиями - обменная (или пузырьковая) сортировка и сортировка выбором. Эти алгоритмы, в худшем случае, решают задачу сортировки за время пропорциональное N2, где N - число сортируемых элементов. Такие алгоритмы называют алгоритмами с квадратичной сложностью. Эти алгоритмы используют, когда число сортируемых элементов относительно не велико (до 1000). Для сортировки данных больших объемов используют более сложные, с точки зрения реализации, алгоритмы. Сложность этих алгоритмов определяется по формулам: N*lnN или N*log2N. Такие алгоритмы называют алгоритмами с логарифмической сложностью или быстрой сортировки. Эти алгоритмы используют чаще всего при сортировке данных в оперативной памяти, например в массивах или в динамических списках. Для сортировки данных во внешней памяти можно использовать алгоритм сортировки слиянием. Кроме перечисленных алгоритмов существует большое число других алгоритмов, с которыми можно ознакомиться, например, в [2,3].
Сортировка выбором
В литературе описано несколько различных модификаций сортировки выбором, но суть их всех заключается в том, что на очередном шаге выбирается необходимый элемент, и он помещается на заданное место в сортируемой последовательности. Рассмотрим одну их модификаций сортировки выбором.
Пусть дан одномерный неупорядоченный массив, содержащий целые числа М={mi}, i=1,n; n - число элементов. Необходимо упорядочить элементы этого массива по возрастанию их значений.
На первом шаге из элементов массива выбирается минимальный, и он меняется местами с элементом, стоящем на первом месте. На втором шаге из оставшихся неупорядоченных элементов, начиная со второго, выбирается следующий минимальный элемент, и он меняется местами с элементом, стоящем на втором месте. Процесс повторяется до тех пор, пока не будут переставлены все элементы. Последний элемент можно не проверять, так как к этому времени все элементы уже будут стоять на своих местах.
В том случае, если требуется упорядочить элементы по убыванию их значений, осуществляется поиск и обмен максимального элемента.
Рассмотрим работу алгоритма по схеме.
Схема алгоритма сортировки выбором
нет
да
|
Min - минимальный элемент
i_min - адрес минимального элемента
Текст программы сортировки выбором
Uses crt;
Var
M:array[1..1000] of integer;
n, i, j, Min, i_min:integer;
Begin
Clrscr;
Write(' Введите длину массива n = ');
Readln(n);
{ Вместо ввода с клавиатуры заполним массив случайными числами из диапазона от 0 до 500}
For i:=1 to n do M[i]:=Random(500);
For i:=1 to n-1 do
Begin
{принимаем за минимум i-й элемент}
Min:=M[i]; i_min:=i;
For j:=i+1 to n do
If M[j]<Min then
Begin
{найдено меньшее число - запоминаем его и его адрес}
Min:=M[j]; i_min:=j;
End;
{Обмен}
M[i_min]:=M[i];
M[i]:=Min;
End;
Writeln(' Упорядоченный массив');
For i:=1 to n do write(M[i],' ');
readkey;
End.
Обменная сортировка
Обменная сортировка основывается на последовательном сравнении двух рядом стоящих элементов и если порядок следования нарушен, элементы меняются местами. Сравнения производятся до тех пор, пока при очередном цикле просмотра всех рядом стоящих пар элементов, ни одна пара элементов не будет меняться местами. В том случае, если элементы массива уже упорядочены, алгоритм закончит свою работу после одного цикла просмотра всех рядом стоящих пар.
Просмор пар может начинаться с начала массива или с его конца, в последнем случае алгоритм называют алгоритмом пузырьковой сортировки. Подробнее об этом можно ознакомиться в [2,3].
Рассмотрим работу алгоритма по схеме.
Схема алгоритма обменной сортировки
нет
да
нет да
Key - ключ, определяющий была ли перестановка пар элементов;
Z - переменная, необходимая для хранения промежуточного элемента при перестановке.
Текст программы обменной сортировки
Uses crt;
Var M:array[1..1000] of integer;
i,Z,n:integer; Key:byte;
Begin Clrscr;
{Ввод n и формирование массива М как в предыдущей программе}
Repeat
Key:=0;
For i:=1 to n-1 do
If M[i] > M[i+1] then
begin
Z:=M[i];
M[i]:=M[i+1];
M[i+1]:=Z;
Key:=1;
end;
Until Key=0;
Writeln(' Упорядоченный массив');
For i:=1 to n do write(M[i],' '); readkey;
End.
Сортировка слиянием
Алгоритм сортировки слиянием используется в тех случаях, когда данные расположены на внешних носителях информации или сортируется данные очень большого объема, которые невозможно расположить в оперативной памяти целиком. В этом случае данные могут быть сохранены, например, в отдельных файлах, таких размеров, которые могут быть помещены в оперативную память, например в массивы. Производится загрузка данных из файлов в массивы и сортировка данных каждого из массивов отдельно. Упорядоченные данные снова записываются в файлы. Затем производится сортировка слиянием уже упорядоченных данных, расположенных в отдельных файлах.
Поскольку мы пока не знакомы с работой с файлами в ТР, рассмотрим алгоритм сортировки слиянием на примере слияния двух предварительно упорядоченных массивов Х и Y в один массив Z. Данные в массивах расположены в порядке возрастания их значений.
Обзначим через переменные dx, dy - длину (размер) массивов X, Y соответственно. Переменные ix, iy - счетчики (адреса) тех же массивов. Переменная iz - счетчик числа элементов нового массива Z.
Схема алгоритма сортировки слиянием
нет
да
да да
нет нет
Текст программы сортировки слиянием
Uses crt;
Var { Описание массивов и переменных}
X, Y: array[1..1000] of integer;
Z: array[1..2000] of integer;
dx,dy,ix,iy,iz,i:integer;
Begin Clrscr; { Ввод данных}
Write(' Введите длину массива Х '); readln(dx);
Writeln(' Введите упорядоченный по возрастанию массив Х');
For i:=1 to dx do read(X[i]); readln;
Write(' Введите длину массива Y '); readln(dy);
Writeln(' Введите упорядоченный по возрастанию массив Y');
For i:=1 to dy do read(Y[i]); readln;
ix:=1; iy:=1; iz:=0;
While (ix<=dx) and (iy<=dy) do
if X[ix]<Y[iy] then
begin {Перезапись значения из массива Х в массив Z}
inc(iz); Z[iz]:=X[ix]; inc(ix);
end
else
begin {Перзапись значения из массива Y в массив Z}
inc(iz); Z[iz]:=Y[iy]; inc(iy);
end;
{ Один из массивов полностью переписан }
if ix>dx then { Переписан массив Х, дописываем все оставшееся из Y}
for i:=iy to dy do
begin
inc(iz); Z[iz]:=Y[i];
end
else { Переписан массив Y, дописываем все оставшееся из X }
for i:=ix to dx do
begin
inc(iz); Z[iz]:=X[i];
end;
{ Вывод результата слияния на экран}
writeln(' Полученный массив Z');
for i:=1 to iz do write(Z[i],' '); readln;
End.
Лабораторная работа №10
Цель работы:
1. Изучить алгоритмы сортировки.
2. Приобрести навыки программирования задач сортировки данных различных типов.
Типовое задание
Разработать схему алгоритма и программу решения задачи с использованием алгоритмов сортировки.
Варианты самостоятельных заданий
В а р и а н т 1
Дана квадратная матрица размером n x n, содержащая вещественные числа. Определить сумму элементов в каждой строке матрицы и упорядочить номера строк по убыванию значений найденных сумм с помощью алгоритма сортировки выбором. Вывести упорядоченный список номеров строк и соответствующих им сумм.
В а р и а н т 2
Дана прямоугольная матрица размером n x м, содержащая вещественные числа. Определить сумму элементов в каждой строке матрицы и упорядочить номера строк по убыванию значений найденных сумм с помощью алгоритма сортировки обменом. Вывести упорядоченный список номеров строк и соответствующих им сумм.
В а р и а н т 3
Дана прямоугольная матрица размером n x м, содержащая вещественные числа. Определить сумму положительных элементов в каждой строке матрицы и упорядочить номера строк по возрастанию значений найденных сумм с помощью алгоритма обменной сортировки. Вывести упорядоченный список номеров строк и соответствующих им сумм.
В а р и а н т 4
Дана квадратная матрица размером n x n, содержащая вещественные числа. Определить сумму элементов в каждом столбце матрицы и упорядочить номера столбцов по убыванию значений найденных сумм с помощью сортировки выбором. Вывести упорядоченный список номеров столбцов и соответствующих им сумм.
В а р и а н т 5
Даны два одномерных массива, содержащие вещественные числа. Упорядочить по убыванию значений каждый из массивов с помощью алгоритма сортировки выбором, а затем получить новый массив, содержащий элементы двух заданных массивов также упорядоченный по убыванию, используя алгоритм сортировки слиянием.
В а р и а н т 6
Дана квадратная матрица размером n x n, содержащая вещественные положительные числа. Определить сумму четных элементов в каждом столбце матрицы и упорядочить номера столбцов по убыванию значений найденных сумм с помощью обменной сортировки. Вывести упорядоченный список номеров столбцов и соответствующих им сумм.
В а р и а н т 7
Дана квадратная матрица размером n x n, содержащая целые положительные числа. Определить сумму элементов в каждой строке матрицы и упорядочить номера строк по убыванию значений найденных сумм с помощью алгоритма сортировки выбором. Вывести упорядоченный список номеров строк и соответствующих им сумм.
В а р и а н т 8
Дана прямоугольная матрица размером n x м, содержащая целые положительные числа. Определить сумму элементов в каждой строке матрицы и упорядочить номера строк по убыванию значений найденных сумм с помощью алгоритма сортировки обменом. Вывести упорядоченный список номеров строк и соответствующих им сумм.
В а р и а н т 9
Дана прямоугольная матрица размером n x м, содержащая целые числа. Определить сумму положительных элементов в каждой строке матрицы и упорядочить номера строк по возрастанию значений найденных сумм с помощью алгоритма обменной сортировки. Вывести упорядоченный список номеров строк и соответствующих им сумм.
В а р и а н т 10
Дана квадратная матрица размером n x n, содержащая целые положительные числа. Определить сумму элементов в каждом столбце матрицы и упорядочить номера столбцов по убыванию значений найденных сумм с помощью сортировки выбором. Вывести упорядоченный список номеров столбцов и соответствующих им сумм.
В а р и а н т 11
Даны два одномерных массива, содержащие целые числа. Упорядочить по убыванию значений каждый из массивов с помощью алгоритма сортировкивыбором, а затем получить новый массив, содержащий элементы двух заданных массивов также упорядоченный по убыванию, используя алгоритм сортировки слиянием.
В а р и а н т 12
Дана квадратная матрица размером n x n, содержащая целые положительные числа. Определить сумму четных элементов в каждом столбце матрицы и упорядочить номера столбцов по убыванию значений найденных сумм с помощью обменной сортировки. Вывести упорядоченный список номеров столбцов и соответствующих им сумм.
В а р и а н т 13
Дан массив, состоящий из записей. Каждая запись содержит два поля:
1 - табельный номер (целое число в диапазоне от 0 до 999) и
2 - фамилия (символьное поле длиной 20).
Упорядочить массив записей по убыванию значений табельных номеров с помощью алгоритма сортировки выбором и вывести новый массив.
В а р и а н т 14
Дан массив, состоящий из записей. Каждая запись содержит два поля:
1 - табельный номер (целое число в диапазоне от 0 до 999) и
2 - фамилия (символьное поле длиной 20).
Упорядочить массив записей по убыванию значений табельных номеров с помощью алгоритма обменной сортировки и вывести новый массив.
В а р и а н т 15
Дан массив, состоящий из записей. Каждая запись содержит два поля:
1 - табельный номер (целое число в диапазоне от 0 до 999) и
2 - фамилия (символьное поле длиной 20).
Упорядочить массив записей по возрастанию значений табельных номеров с помощью алгоритма обменной сортировки и вывести новый массив.
В а р и а н т 16
Дан массив, состоящий из записей. Каждая запись содержит два поля:
1 - табельный номер (целое число в диапазоне от 0 до 999) и
2 - фамилия (символьное поле длиной 20).
Упорядочить массив записей по возрастанию значений табельных номеров с помощью алгоритма сортировки выбором и вывести новый массив.
В а р и а н т 17
Дан массив, состоящий из записей. Каждая запись содержит два поля:
1 - табельный номер (целое число в диапазоне от 0 до 9999) и
2 - фамилия (символьное поле длиной 30).
Упорядочить массив записей по полю фамилия (в алфавитном порядке) с помощью алгоритма сортировки выбором и вывести новый массив.
В а р и а н т 18
Дан массив, состоящий из записей. Каждая запись содержит два поля:
1 - табельный номер (целое число в диапазоне от 0 до 9999) и
2 - фамилия (символьное поле длиной 30).
Упорядочить массив записей по полю фамилия (в алфавитном порядке) с помощью алгоритма обменной сортировки и вывести новый массив.
В а р и а н т 19
Дан массив, состоящий из записей. Каждая запись содержит два поля:
1 - табельный номер (целое число в диапазоне от 0 до 9999) и
2 - фамилия (символьное поле длиной 30).
Упорядочить массив записей по полю фамилия (в порядке обратном алфавитному) с помощью алгоритма обменной сортировки и вывести новый массив.
В а р и а н т 20
Дан массив, состоящий из записей. Каждая запись содержит два поля:
1 - табельный номер (целое число в диапазоне от 0 до 9999) и
2 - фамилия (символьное поле длиной 30).
Упорядочить массив записей по полю фамилия (в порядке обратном алфавитному) с помощью алгоритма сортировки выбором и вывести новый массив.
18 Задача поиска: алгоритмы и программы
Наряду с задачей сортировки актуальной при работе с данными является поиск данных по заданному признаку. Если данные не упорядочены, то для поиска приходится просматрить весь объем информации. В том случае, если данные упорядочены, для поиска используют один из двух известных алгоритмов поиска: линейный или двоичный поиск. Рассмотрим эти алгоритмы и реализующие их программы.
Пусть задан массив Х, содержащий n целых чисел, расположенных в порядке возрастания значений. Требуется найти заданное число isk.
Линейный поиск
Линейный поиск заключается в последовательном сравнении элементов упорядоченного массива Х с искомым значением isk. Поиск в этом случае заканчивается в двух случаях:
1. Очередной элемент массива Х равен искомому значению isk, в этом случае элемент найден.
2. Очередной элемент массива Х больше искомого значения, а так как все последующие элементы также больше isk, то искомого элемента не может быть в Х.
Схема алгоритма линейного поиска
нет да
нет
да
В худшем случае для поиска заданного элемента алгоритмом линейного поиска приходится проводить n сравнений, т.е. временная сложность алгоритма ~ n.
Текст программы линейного поиска
Uses crt;
Var
X:array[1..10000] of integer;
i, n, isk:integer;
Begin
write(' Введите число элементов в массиве - n ');
readln(n);
write(' Введите элементы массива Х ');
for i:=1 to n do read(X[i]); writeln;
write(' Введите искомое число'); readln(isk);
for i:=1 to n do
if X[i]=isk then
begin
writeln(' Элемент найден по адресу i = ' ,i );
readln; exit
end
else if X[i]>isk then break;
writeln(' Заданного элемента нет');
readln;
End.
Двоичный поиск
Двоичный поиск заключается в следующем: вычисляется середина массива и элемент xi, находящийся по найденному адресу, сравнивается с искомым. Если элементы xi и isk равны, то поиск закончен. Если xi < isk, то искомый элемент может находиться в последующей xi части массива, в противном случае поиск надо осуществлять в предшествующей xi части массива. Такой подход позволяет сократить число просматриваемых элементов в 2 раза. Далее в выделенной части массива также определяется средний элемент, и он сравнивается с искомым. Подобная процедура повторяется до тех пор, пока ни будет найден заданный элемент или пока не совпадут начальный и конечный адрес просматриваемой, на очередном шаге, части массива. Если эти адреса совпадут и к этому моменту элемент не найден, то его в массиве нет.
Временная сложность алгоритма двоичного поиска ~ log2n.
Схема алгоритма двоичного поиска
First - адрес начала просматриваемой части.
Last - адрес конца просматриваемой части
< =
>
Текст программы
Uses crt;
Var X:array[1..10000] of integer;
isk,i,n,adr,First,Last:integer;
Begin
write(' Введите число элементов в массиве - n ');
readln(n);
write(' Введите элементы массива Х ');
for i:=1 to n do read(X[i]);
writeln;
write(' Введите искомое число');
readln(isk);
First:=1; Last:=n;
while First <= Last do begin
adr:=(First+Last) div 2;
if isk=X[adr] then
begin writeln('Yes! isk = ',isk,' adr = ',adr);
exit
end
else if isk<X[adr] then Last:=adr-1
else First:=adr+1;
end;
writeln(' Not found');
end.
Лабораторная работа №11
Цель работы:
3. Изучить алгоритмы поиска.
4. Приобрести навыки программирования задач поиска данных различных типов.
Типовое задание
Разработать схему алгоритма и программу решения задачи поиска в массиве записей по заданным полям, с использованием алгоритмов линейного и двоичного поиска.
Варианты самостоятельных заданий
В а р и а н т 1
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Шифр книги Ф.И.О. авторов Название Год
тип строка тип строка тип строка издания
5 символов 20 символов 15 символов целое
Список упорядочен по возрастанию года издания.
Разработать алгоритмы и программы линейного и двоичного поиска всех книг, изданных до 1960 год с выводом найденных записей на экран.
В а р и а н т 2
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Шифр товара Наименование Цена (в руб.) Количество
тип строка тип строка вещественное экземпляров
5 символов 20 символов число целое число
Список упорядочен по убыванию цены товара.
Разработать алгоритмы и программы линейного и двоичного поиска всех товаров, имеющих цену меньше 20000 руб. с выводом найденных записей на экран.
В а р и а н т 3
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Номер рейса Пункт отправления Пункт назначения Дни
тип строка тип строка тип строка полетов
5 символов 10 символов 10 символов от 1 до 7
Список упорядочен по наименованию пунктов отправления (по алфавиту).
Разработать алгоритмы и программы линейного и двоичного поиска рейсов, вылетающих из всех пунктов, наименование которых начинается с буквы "К" с выводом найденных записей на экран.
В а р и а н т 4
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Ф.И.О. Домашний адрес Номер участка Год
тип строка тип строка тип рождения
15 символов 20 символов integer 1900..2000
Список упорядочен по возрастанию года рождения.
Разработать алгоритмы и программы линейного и двоичного поиска всех граждан из списка, родившихся до 1950 года с выводом найденных записей на экран.
В а р и а н т 5
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Шифр товара Наименование товара Цена (руб.) Признак
тип строка тип строка число типа наличия или
5 символов 20 символов real отсутствия
Список упорядочен по убыванию цены товара.
Разработать алгоритмы и программы линейного и двоичного поиска всех товаров, цена которых не превышает 15000 руб., с выводом найденных записей на экран.
В а р и а н т 6
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Ф.И.О. Факультет Группа Год рождения
20 символов 5 символов 6 символов целое число
Список упорядочен по убыванию года рождения.
Разработать алгоритмы и программы линейного и двоичного поиска всех студентов, родившихся до 1979 года с выводом найденных записей на экран.
В а р и а н т 7
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Ф.И.О. авторов Название Год Шифр
тип строка тип строка издания строка
20 символов 20 символов целое 8 символов
Список упорядочен по убыванию года рождения.
Разработать алгоритмы и программы линейного и двоичного поиска книг, изданных до 1990 года с выводом найденных записей на экран.
В а р и а н т 8
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Ф.И.О. авторов Название Год Шифр
тип строка тип строка издания строка
20 символов 20 символов целое 8 символов
Список упорядочен по возрастанию года издания.
Разработать алгоритмы и программы линейного и двоичного поиска книг, изданных после 1990 года с выводом найденных записей на экран.
В а р и а н т 9
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Номер рейса Пункт отправления Пункт назначения Дни
тип тип строка тип строка полетов
integer 20 символов 10 символов от 1 до 7
Список упорядочен по возрастанию номеров рейсов.
Разработать алгоритмы и программы линейного и двоичного поиска всех рейсов с номерами большими, чем 50 с выводом найденных записей на экран.
В а р и а н т 10
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Ф.И.О. Домашний адрес Номер участка Год
тип строка тип строка тип рождения
15 символов 30 символов integer 1900..2000
Список упорядочен оп убыванию года рождения.
Разработать алгоритмы и программы линейного и двоичного поиск всех граждан, родившихся до 1970 года с выводом найденных записей на экран.
В а р и а н т 11
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Шифр книги Ф.И.О. авторов Название Год
тип строка тип строка тип строка издания
5 символов 20 символов 15 символов целое
Список упорядочен по убыванию года издания.
Разработать алгоритмы и программы линейного и двоичного поиска книг, изданных до 1950 году с выводом найденных записей на экран.
В а р и а н т 12
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Шифр товара Наименование Цена(в руб.) Количество
тип строка тип строка вещественное экземпляров
5 символов 20 символов число целое число
список упорядочен по возрастанию цены.
Разработать алгоритмы и программы линейного и двоичного поиска товаров, имеющих цену не меньше 20000 руб. с выводом найденных записей на экран.
В а р и а н т 13
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Номер рейса Пункт отправления Пункт назначения Дни
тип строка тип строка тип строка полетов
5 символов 12 символов 10 символов от 1 до 7
Список упорядочен по полю "Пункт назначения" (по алфавиту).
Разработать алгоритмы и программы линейного и двоичного поиска рейсов, вылетающих в города, начинающиеся с буквы "В", с выводом найденных записей на экран.
В а р и а н т 14
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Ф.И.О. Домашний адрес Номер участка Год
тип строка тип строка тип рождения
15 символов 20 символов integer 1900..2000
Список упорядочен по убыванию года рождения.
Разработать алгоритмы и программы линейного и двоичного поиска всех граждан из списка, родившихся до 1980 года с выводом найденных записей на экран.
В а р и а н т 15
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Шифр товара Наименование товара Цена(руб.) Признак
тип строка тип строка число типа наличия или
5 символов 20 символов real отсутствия
Список упорядочен по возрастанию цены.
Разработать алгоритмы и программы линейного и двоичного поиска всех товаров, имеющих цену, не меньше 25000 руб. с выводом найденных записей на экран.
В а р и а н т 16
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Ф.И.О. Факультет Группа Год рождения
20 символов 5 символов 6 символов целое число
Список упорядочен по убыванию года рождения.
Разработать алгоритмы и программылинейного и двоичного поиска всех студентов, родившихся до 1980 года с выводом найденных записей на экран.
В а р и а н т 17
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Ф.И.О. авторов Название Год Шифр
тип строка тип строка издания строка
20 символов 20 символов целое 8 символов
Список упорядочен по возрастанию года издания.
Разработать алгоритмы и программы линейного и двоичного поиска книг, изданных после 1990 года с выводом найденных записей на экран.
В а р и а н т 18
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Ф.И.О. авторов Название Год Шифр
тип строка тип строка издания строка
20 символов 20 символов целое 8 символов
Список упорядочен по полю "Шифр" (по алфавиту).
Разработать алгоритмы и программы линейного и двоичного поиска книг, поле шифр которых начинаются с буквы " Т" с выводом найденных записей на экран.
В а р и а н т 19
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Номер рейса Пункт отправления Пункт назначения Дни
тип тип строка тип строка полетов
integer 20 символов 15 символов от 1 до 7
Список упорядочен по убыванию номеров рейсов.
Разработать алгоритмы и программы линейного и двоичного поиска всех рейсов с номерами меньшими, чем 100 с выводом найденных записей на экран.
В а р и а н т 20
Дан список, содержащий 10 записей, каждая из которых имеет структуру:
Ф.И.О. Домашний адрес Номер участка Год
тип строка тип строка тип рождения
15 символов 30 символов integer 1900..2000
Список упорядочен по возрастанию года рождения.
Разработать алгоритмы и программы линейного и двоичного поиска всех граждан, родившихся после 1970 г. с выводом найденных записей на экран.
Литература
1. В.В. Фаронов ТурбоПаскаль 7.0. Начальный курс. Учебное пособие. - М.: «Нолидж», 1997
2. Вирт Н. Алгоритмы + структуры данных = программы.- М.: Мир, 1985
3. Кнут Д. Искусство программирования для ЭВМ. Т. 3. Сортировка и
поиск.- М.:Мир, 1978.