Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовой.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
275.46 Кб
Скачать

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;