- •Оглавление
- •Введение
- •Методические указания
- •Темы курсовых проектов
- •Пример выполнения курсового проекта
- •1 Постановка задачи
- •2 Краткая теория
- •2.1 Сортировка методом прямого включения
- •2.2 Сортировка методом прямого выбора
- •2.3 Сортировка с помощью прямого обмена (пузырьковая)
- •3 Метод исследования
- •4 Результаты исследования
- •5 Контрольный пример
- •6 Заключение
- •7 Приложение Описание процедур, используемых в программе
- •Текст программы( на языке программирования Pascal)
- •I:integer;
- •I:integer;
- •I,j:integer;
- •X:integer;
- •I,j:integer;
- •X:integer;
- •I,j:integer;
- •X:integer;
- •I,j:integer;
- •Item:byte;
- •{Fill - процедура, заполняющая заданную область экрана заданными символами заданного цвета}
- •1:Example;
- •2:Begin
- •{Вызов процедуры make, осуществляющей исследование методов сортировки}
- •{Вызов процедуры make, осуществляющей исследование методов сортировки}
- •{Вызов процедуры make, осуществляющей исследование методов сортировки}
- •3:Begin
- •4:Begin
- •5:Begin
- •6:Begin
- •Gotoxy(12,7);write('Данная программа является курсовым проектом по дисциплине');
- •Список литературы
I,j:integer;
x:rec;
{переменные для подсчета количества сравнений и перемещений
во время сортировки}
k_sr,k_p:integer;
key:char;
begin
{переменные для подсчета количества сравнений и перемещений
во время сортировки}
k_sr:=0;k_p:=0;
randomize;
{Данный массив, содержащий имена студентов}
mas[1].name:='Иван';mas[2].name:='Петр';mas[3].name:='Сидор';
mas[4].name:='Василий';mas[5].name:='Денис';mas[6].name:='Геннадий';
mas[7].name:='Борис';mas[8].name:='Марат';mas[9].name:='Казбек';
mas[10].name:='Алексей';mas[11].name:='Владимир';mas[12].name:='Сидор';
mas[13].name:='Виталий';mas[14].name:='Александр';mas[15].name:='Михаил';
mas[16].name:='Евгений';mas[17].name:='Артур';mas[18].name:='Руслан';
mas[19].name:='Мурат';mas[20].name:='Аркадий';
{задание количества баллов у студента случайным образом}
for i:=1 to 20 do
mas[i].num:=random(19)+1;
{вывод пояснений}
getshadow;
textbackground(lightgray);
textcolor(red);gotoxy(15,1);write('Пример сортировки по убыванию методом прямого включения');
textbackground(lightgray);
textcolor(red); gotoxy(3,25); write('Esc - главное меню');
textcolor(red); gotoxy(65,25); write('F1 - задание');
box(58,0,80,25,1,15,double,'Статистика');
textcolor(lightmagenta);
gotoxy(59,3); write(' Сортировка методом ');
gotoxy(61,4); write('прямого включения.');
textcolor(white); gotoxy(59,5); write('---------------------');
box(31,0,57,25,1,15,double,'После сортировки');
textcolor(lightmagenta); gotoxy(32,3); write(' N Имя балл');
box(1,0,30,25,1,15,double,'До сортировки');
textcolor(lightmagenta); gotoxy(3,3); write('N Имя балл');
{вывод на экран исходного массива}
for i:=1 to 20 do
begin
textcolor(lightcyan); gotoxy(3,i+3); write(i);
textcolor(yellow); gotoxy(7,i+3); write(mas[i].name);
textcolor(lightred); gotoxy(25,i+3); writeln(mas[i].num);
end;
{сортировка по убыванию количества баллов}
for i := 2 to 20 do
begin
x := mas[i];
for j := i - 1 downto 1 do
begin
{k_sr - счетчик количества сравнений}
k_sr:= k_sr+1;
if x.num > mas[j].num then
begin
{k_p - счетчик количества перемещений}
k_p:=k_p+1;
{обмена содержимым элементов массива mas[j+1] и mas[j]
с помощью переменной x}
mas[j + 1] := mas[j];
mas[j]:=x;
end;
end;
end;
{вывод на экран отсортированного массива}
for i:=1 to 20 do
begin
textcolor(lightcyan); gotoxy(33,i+3); write(i);
textcolor(yellow); gotoxy(37,i+3); write(mas[i].name);
textcolor(lightred); gotoxy(52,i+3); writeln(mas[i].num);
end;
{вывод на экран количества сравнений и перестановок
в массиве, осуществленных во время сортировки}
textcolor(lightgreen); gotoxy(61,6); write('Сравнений:');
textcolor(lightgray); gotoxy(75,6); write(k_sr);
textcolor(lightgreen); gotoxy(61,8); write('Перестановок:');
textcolor(lightgray); gotoxy(75,8); write(k_p);
repeat
key:=' '; if keypressed then key:=readkey;
case key of
{#59 - код клавиши F1}
#59:begin
{вывод окна с заданием для контрольного примера}
{putshadow+box - вывод окна с тенью}
putshadow(15,7,65,15);box(15,7,65,15,lightgray,0,double,'Задание');
textcolor(red);
gotoxy(21,9); write('Дан список, содержащий фамилии студентов');
gotoxy(21,10); write('и их рейтинговые баллы. Необходимо от-');
gotoxy(21,11); write('сортировать данный список по убыванию ');
gotoxy(21,12); write('рейтинговых баллов.');
textcolor(yellow);gotoxy(50,15);write('Enter - отмена');
end;
{#13 - код клавиши Enter}
#13:getshadow;
end;
{#27 - код клавиши Esc}
until key=#27;
end;
{**********************************************************
***********************************************************
************************ Основная программа **************
***********************************************************
**********************************************************}
const
{массив строк - пунктов главного меню}
menu:array[1..7] of string=(' Пример сортировки ',' Исследование (10 эл-тов)',
' Исследование (100 эл-тов) ',
' Исследование (1000 эл-тов) ',
' Исследование (10000 эл-тов) ',
,' Выход ');
var
{массивы чисел, используемые для исследования}
a,a1:array[0..9] of integer; {10 - чисел}
b,b1:array[0..99] of integer; {100 - чисел}
c,c1:array[0..999] of integer; {1000 - чисел}
d,d1:array[0..9999] of integer; {10000 - чисел}
f:byte; {показатель того, какой массив
поступает в процедуру для упо-
рядочивания по убыванию:
1 - неупорядоченный (слу-
чайный);
2 - упорядоченный по воз-
растанию;
3 - упорядоченный по убы-
ванию}.
k:char;
