
- •Турбо паскаль. Краткая справка.
- •Тема 1. Блок-схемы в линейных и разветвляющихся алгоритмах.
- •Тема 2. Алгебраические вычисления.
- •Тема 3. Блок-схемы циклических алгоритмов.
- •Тема 4. Сумма ряда.
- •Тема 5. Решение нелинейных алгебраических уравнений методом простой итерации.
- •Тема 6. Численное интегрирование.
- •Тема 7. Экстремум функции.
- •Тема 8. Символьный тип.
- •Тема 9. График функции в текстовом режиме.
- •Тема 10. Массивы.
- •Тема 11. Строки.
- •Тема 12. Множества.
- •Тема 13. Записи.
- •Тема 14. Сортировка.
- •Тема 15. Модули.
- •Тема 16. Процедурные типы.
- •Тема 17. Ассемблер.
- •Тема 18. Указатели.
- •Тема 19. Линейный регрессионный анализ.
- •Тема 20. Создание графических изображений.
- •Тема 21. Динамическая память в программировании графического режима.
Тема 14. Сортировка.
Написать программу сортировки записей в соответствии c условием задания. Записи считываются из типизированного файла, полученного в соответствии с условиями заданий темы 13. Сортировка записей должна быть реализована в подпрограммах. Исходные записи вывести в главной программе. Имя файла ввести с клавиатуры в главной программе. Отсортированные записи вывести на экран монитора в главной программе. Метод сортировки задан.
Пример 1. Отсортировать записи из примера 1 задания 13. Сортировку провести методом “пузырька” по признаку пола (3-е поле в записи).
program pr14;
uses crt;
type Tsotr = record
code: string;
fam: string;
pol: char
end;
TsotrAr = array[1..20] of Tsotr;
procedure swap(var x, y: Tsotr);
var
temp: Tsotr;
begin
temp:= x;
x:= y;
y:= temp
end;
procedure sort(n: byte; var A: TsotrAr);
var i, j: byte;
begin
for i:= 1 to n - 1 do
for j:= n downto i + 1 do
if A[j].pol < A[j - 1].pol then
swap(A[j], A[j - 1])
end;
var
sot: TsotrAr;
fl: file of Tsotr;
s: string;
i, n1: byte;
begin clrscr;
write('Введите имя файла -> ');
readln(s);
assign(fl, s);
reset(fl);
writeln('Исходные записи:');
writeln(' код фамилия пол');
writeln('==================');
n1:= 0;
repeat
inc(n1);
read(fl, sot[n1]);
with sot[n1] do
writeln(code:3, fam: 10, pol:3);
until eof(fl);
sort(n1, sot);
writeln('После сортировки:');
writeln(' код фамилия пол');
writeln('==================');
for i:= 1 to n1 do
with sot[i] do
writeln(code:3, fam: 10, pol:3);
close(fl);
readkey
end.
Задания для самостоятельного выполнения.
Вариант |
Ключевое поле |
Метод сортировки |
1 |
Средний балл |
1 |
2 |
Стаж |
2 |
3 |
Фамилия |
3 |
4 |
Год выпуска |
1 |
5 |
Издательство |
2 |
6 |
Город |
3 |
7 |
Область применения |
1 |
8 |
Цена |
2 |
9 |
Время отправления |
3 |
10 |
Номер поезда |
1 |
11 |
Процессор |
2 |
12 |
Рост |
3 |
13 |
Стаж работы |
1 |
14 |
Этаж |
2 |
15 |
Номер телефона |
3 |
16 |
Адрес |
1 |
17 |
Срок годности |
2 |
18 |
Калорийность |
3 |
19 |
Цена |
4 |
20 |
Автор |
4 |
21 |
Режиссер |
4 |
22 |
Название |
4 |
23 |
Адрес |
4 |
24 |
Дата рождения |
4 |
Методы сортировки:
“Пузырька”;
Вставками;
Выбором.
Быстрая сортировка (рекурсивный алгоритм).
Тема 15. Модули.
Оформить в виде модуля подпрограммы, разработанные при выполнении заданий по предыдущим темам. Обратиться к этим подпрограммам из главной программы. Исходные данные ввести с клавиатуры в главной программе. Результаты вывести на экран монитора в главной программе.
Пример 1. Разработать модуль, реализующий операции с комплексными числами.
unit cmplx;
interface
type complex = record
re, im: real
end;
{сложение}
procedure addc(x, y: complex; var z: complex);
{разность}
procedure subc(x, y: complex; var z: complex);
{умножение}
procedure mulc(x, y: complex; var z: complex);
{деление}
procedure divc(x, y: complex; var z: complex);
implementation
procedure addc;
begin
z.re:= x.re + y.re;
z.im:= x.im + y.im
end;
procedure subc;
begin
z.re:= x.re - y.re;
z.im:= x.im - y.im
end;
procedure mulc;
begin
z.re:= x.re*y.re - x.im*y.im;
z.im:= x.re*y.im + x.im*y.re
end;
procedure divc;
var zz: real;
begin
zz:= sqr(y.re) + sqr(y.im);
z.re:= (x.re*y.re - x.im*y.im)/zz;
z.im:= (x.re*y.im - x.im*y.re)/zz
end
end.
program pr15;
uses crt, cmplx;
var a, b, c: complex;
begin clrscr;
a.re:= 1.; a.im:= 1.;
b.re:= 1.; b.im:= 2.;
writeln('Исходные числа:');
writeln('a = ', a.re:5:2,' + i',a.im:5:2);
writeln('b = ', b.re:5:2,' + i',b.im:5:2);
writeln('Результат:');
addc(a,b,c);
writeln('a + b = ',c.re:5:2,' + i',c.im:5:2);
subc(a,b,c);
writeln('a - b = ',c.re:5:2,' + i',c.im:5:2);
mulc(a,b,c);
writeln('a * b = ',c.re:5:2,' + i',c.im:5:2);
divc(a,b,c);
writeln('a / b = ',c.re:5:2,' + i',c.im:5:2);
readkey
end.
Задания для самостоятельного выполнения.
Вариант |
Номера тем |
Вариант |
Номера тем |
1 |
5, 14 |
13 |
7, 10 |
2 |
6, 13 |
14 |
8, 9 |
3 |
7, 12 |
15 |
9, 12 |
4 |
8, 11 |
16 |
6, 8 |
5 |
9, 10 |
17 |
7, 9 |
6 |
6, 14 |
18 |
5, 6 |
7 |
7, 13 |
19 |
7, 8 |
8 |
8, 12 |
20 |
11, 13 |
9 |
9, 11 |
21 |
12, 14 |
10 |
10, 8 |
22 |
13, 10 |
11 |
5, 9 |
23 |
9, 14 |
12 |
6, 11 |
24 |
7, 9 |