• Добро пожаловать на компьютерный форум Tehnari.ru. Здесь разбираемся с проблемами ПК и ноутбуков: Windows, драйверы, «железо», сборка и апгрейд, софт и безопасность. Форум работает много лет, сейчас он переехал на новый движок, но старые темы и аккаунты мы постарались сохранить максимально аккуратно.

    Форум не связан с магазинами и сервисами – мы ничего не продаём и не даём «рекламу под видом совета». Отвечают обычные участники и модераторы, которые следят за порядком и качеством подсказок.

    Если вы у нас впервые, загляните на страницу о форуме и правила – там коротко описано, как задать вопрос так, чтобы быстро получить ответ. Чтобы создавать темы и писать сообщения, сначала зарегистрируйтесь, а затем войдите под своим логином.

    Не знаете, с чего начать? Создайте тему с описанием проблемы – подскажем и при необходимости перенесём её в подходящий раздел.
    Задать вопрос Новые сообщения Как правильно спросить
    Если пришли по старой ссылке со старого Tehnari.ru – вы на нужном месте, просто продолжайте обсуждение.

Сортировка в Pascal

  • Автор темы Автор темы Katara
  • Дата начала Дата начала

Katara

Новые
Регистрация
3 Дек 2010
Сообщения
16
Реакции
0
Баллы
0
Сортировка в Pascal

Помогите с сортировкой на паскале, ибо я в этом совсем не бум-бум.:tehnari_ru_117:
В задании необходимо разработать программу, в которой выполняется ввод списка записей определенного типа, а затем - сортировка списка по алгоритму Шелла. Сначала в программе должен вводиться размер списка (целое число), а затем сам список. Ввод одной записи осуществляется в одной строке в соответствии с форматом.

СТУДЕНТ:
` фамилия, имя, отчество (строки по 15 символов);
` курс (целое число от 1 до 5);
` средний балл (вещественное число от 1 до 10).
Формат ввода: Фамилия Имя Отчество [курс], средний балл

По алгоритму Шелла:Идея алгоритма Шелла состоит в том, что в исходном наборе элементов (массиве) сначала упоря-дочиваются элементы, расположенные на расстоянии друг от друга, т.е. итерации по массиву осущест-вляются через несколько элементов. Затем шаг уменьшается и производится сортировка с новым раз-мером шага. Так продолжается до тех пор, пока шаг не станет равным единице. Таким образом, алго-ритм Шелла представляет собой обычный медленный алгоритм сортировки, в котором ускорение про-цесса осуществляется за счет того, что на первых этапах (с большим шагом) обрабатывается меньше элементов, и они упорядочиваются быстрее, перемещаясь по массиву с большими шагами.
 
У меня получилось так:
Код:
program Sortirovka;
uses crt;
type
    zap=record
    FIO:string[45];
    kurs:byte;
    bal:real;
end;
label m,m1;
var
 rec:zap;
 FIO:string;
 q,i,n,p,t,k,d:integer;
 c:array[1..45] of zap;
begin
    clrscr;
    write('Введите количество записей: ');
    readln(n);
for i:=1 to n do
with c[i] do
begin
write('Фамилия:',I,': ');
  readln(c[i].FIO);
write('Курс:',I,': ');
  readln(c[i].kurs);
write('Средний балл:',d,': ');
  readln(c[i].bal);
end;

while p<>n-1 do
  begin
    p:=0;
for i:=1 to n-1 do
if c[i].FIO>c[i+1].FIO then
begin
k:=i;
goto m;
end
else p:=p+1;
m:
if p=n-1 then goto m1;
for i:=k to n do
if c[k].FIO>c[i].FIO then t:=i;
   rec:=c[k];
   c[k]:=c[t];
   c[t]:=rec;
end;
m1:
writeln('ОТСОРТИРОВАНО:');
for i:=1 to n do
with c[i] do
begin
writeln(c[i].FIO,' (',c[i].kurs,')  (',c[i].bal,')');
end;
end.
 
Назад
Сверху