Function имя_функции(параметры);Forward;

Позже, в необходимых местах, описываются сами процедуры или функции в обычном виде и в их заголовке параметры уже указывать не нужно.

Например: процедура с именем А вызывает процедуру с именем В, а процедура В, в свою очередь, вызывает процедуру А.

Procedure A(y:тип);Forward; {Опережающее описание процедуры А}

Procedure B(x:тип); { Заголовок процедуры В}

. . . {Раздел описаний процедуры В}

begin

. . .

A(p); {Вызов процедуры А из В}

. . .

end;

Procedure A; {Основное описание процедуры А}

. . . {Раздел описаний процедуры А}

Begin

. . .

B(g); {Вызов процедуры В из А}

. . .

End;

Лабораторная работа №9

Цель работы: Преобрести навыки разработки программ с использованием функций, представленных в теоретической части.

Типовое задание

Составить программу, максимально используя для вычисления заданных выражений, подпрограммы типа FUNCTION.

Варианты заданий

1. Function имя_функции(параметры);Forward; - student2.ru 2. Function имя_функции(параметры);Forward; - student2.ru

3. Function имя_функции(параметры);Forward; - student2.ru 4. Function имя_функции(параметры);Forward; - student2.ru

5. Function имя_функции(параметры);Forward; - student2.ru 6. Function имя_функции(параметры);Forward; - student2.ru

7. Function имя_функции(параметры);Forward; - student2.ru 8. Function имя_функции(параметры);Forward; - student2.ru

9. Function имя_функции(параметры);Forward; - student2.ru 10. Function имя_функции(параметры);Forward; - student2.ru

11. Function имя_функции(параметры);Forward; - student2.ru 12. Function имя_функции(параметры);Forward; - student2.ru

13. Function имя_функции(параметры);Forward; - student2.ru 14. Function имя_функции(параметры);Forward; - student2.ru

15. Function имя_функции(параметры);Forward; - student2.ru 16. Function имя_функции(параметры);Forward; - student2.ru

17. Function имя_функции(параметры);Forward; - student2.ru 18. Function имя_функции(параметры);Forward; - student2.ru

19. Function имя_функции(параметры);Forward; - student2.ru 20. Function имя_функции(параметры);Forward; - student2.ru

Примечание: При разработке программ не забывайте анализировать область допустимых значений функций.

17. Задача сортировки: алгоритмы и программы

Сортировка данных при решении задач на ЭВМ занимает значительную часть времени. В настоящее время разработано большое число алгоритмов сортировки (упорядочения), отличающихся друг от друга различными признаками: сложностью алгоритма, временем решения, затратами памяти ЭВМ, числом сортируемых элементов, до какой степени элементы уже отсортированы, где располагаются сортируемые данные: во внешней памяти (например, на диске) или в оперативной памяти. Очевидно, что с отсортированными данными работать легче, чем с произвольно расположенными данными. Когда элементы отсортированы, их проще найти или определить, что их нет среди данных.

Наиболее простыми алгоритмами сортировки считаются алгоритмы, известные в литературе под названиями - обменная (или пузырьковая) сортировка и сортировка выбором. Эти алгоритмы, в худшем случае, решают задачу сортировки за время пропорциональное N2, где N - число сортируемых элементов. Такие алгоритмы называют алгоритмами с квадратичной сложностью. Эти алгоритмы используют, когда число сортируемых элементов относительно не велико (до 1000). Для сортировки данных больших объемов используют более сложные, с точки зрения реализации, алгоритмы. Сложность этих алгоритмов определяется по формулам: N*lnN или N*log2N. Такие алгоритмы называют алгоритмами с логарифмической сложностью или быстрой сортировки. Эти алгоритмы используют чаще всего при сортировке данных в оперативной памяти, например в массивах или в динамических списках. Для сортировки данных во внешней памяти можно использовать алгоритм сортировки слиянием. Кроме перечисленных алгоритмов существует большое число других алгоритмов, с которыми можно ознакомиться, например, в [2,3].

Сортировка выбором

В литературе описано несколько различных модификаций сортировки выбором, но суть их всех заключается в том, что на очередном шаге выбирается необходимый элемент, и он помещается на заданное место в сортируемой последовательности. Рассмотрим одну их модификаций сортировки выбором.

Пусть дан одномерный неупорядоченный массив, содержащий целые числа М={mi}, i=1,n; n - число элементов. Необходимо упорядочить элементы этого массива по возрастанию их значений.

На первом шаге из элементов массива выбирается минимальный, и он меняется местами с элементом, стоящем на первом месте. На втором шаге из оставшихся неупорядоченных элементов, начиная со второго, выбирается следующий минимальный элемент, и он меняется местами с элементом, стоящем на втором месте. Процесс повторяется до тех пор, пока не будут переставлены все элементы. Последний элемент можно не проверять, так как к этому времени все элементы уже будут стоять на своих местах.

В том случае, если требуется упорядочить элементы по убыванию их значений, осуществляется поиск и обмен максимального элемента.

Рассмотрим работу алгоритма по схеме.

Схема алгоритма сортировки выбором

 
  Function имя_функции(параметры);Forward; - student2.ru

нет

Function имя_функции(параметры);Forward; - student2.ru

Function имя_функции(параметры);Forward; - student2.ru да

 
 
Min:=M[j] i_min:=j

Min - минимальный элемент

i_min - адрес минимального элемента

 
  Function имя_функции(параметры);Forward; - student2.ru

Текст программы сортировки выбором

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].

Рассмотрим работу алгоритма по схеме.

Схема алгоритма обменной сортировки

 
  Function имя_функции(параметры);Forward; - student2.ru

нет

Function имя_функции(параметры);Forward; - student2.ru

Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru да

Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru

Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru

Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru

       
  Function имя_функции(параметры);Forward; - student2.ru
    Function имя_функции(параметры);Forward; - student2.ru
 

Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru нет да

 
  Function имя_функции(параметры);Forward; - student2.ru

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.

Схема алгоритма сортировки слиянием

 
  Function имя_функции(параметры);Forward; - student2.ru

нет

Function имя_функции(параметры);Forward; - student2.ru да

       
  Function имя_функции(параметры);Forward; - student2.ru
    Function имя_функции(параметры);Forward; - student2.ru

да да

Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru

Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru нет нет

 
  Function имя_функции(параметры);Forward; - student2.ru

Текст программы сортировки слиянием

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, то искомого элемента не может быть в Х.

Схема алгоритма линейного поиска

 
  Function имя_функции(параметры);Forward; - student2.ru

нет да

           
    Function имя_функции(параметры);Forward; - student2.ru
    Function имя_функции(параметры);Forward; - student2.ru
  Function имя_функции(параметры);Forward; - student2.ru
 
 

нет

 
  Function имя_функции(параметры);Forward; - student2.ru

Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru Function имя_функции(параметры);Forward; - student2.ru да

       
    Function имя_функции(параметры);Forward; - student2.ru
 
  Function имя_функции(параметры);Forward; - student2.ru

В худшем случае для поиска заданного элемента алгоритмом линейного поиска приходится проводить 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.

Схема алгоритма двоичного поиска

 
  Function имя_функции(параметры);Forward; - student2.ru

       
  Function имя_функции(параметры);Forward; - student2.ru
    Function имя_функции(параметры);Forward; - student2.ru
 

First - адрес начала просматриваемой части.

 
  Function имя_функции(параметры);Forward; - student2.ru

Last - адрес конца просматриваемой части

 
  Function имя_функции(параметры);Forward; - student2.ru

Function имя_функции(параметры);Forward; - student2.ru < =

       
  Function имя_функции(параметры);Forward; - student2.ru   Function имя_функции(параметры);Forward; - student2.ru
 

Function имя_функции(параметры);Forward; - student2.ru >

       
    Function имя_функции(параметры);Forward; - student2.ru
  Function имя_функции(параметры);Forward; - student2.ru
 

Текст программы

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.

Наши рекомендации