Форум программистов, компьютерный форум, киберфорум
Pascal (Паскаль)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/17: Рейтинг темы: голосов - 17, средняя оценка - 4.53
 Аватар для <..Оля..>
0 / 0 / 0
Регистрация: 05.10.2010
Сообщений: 17

Метод Шелла

16.12.2010, 12:04. Показов 3379. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Программно реализовать алгоритм сортировки Методом Шелла. Каждая запись будет в качестве ключа содержать текстовое выражение, а в качестве информативной части некоторое число.

Тестовый набор записей перед сортировкой необходимо загрузить в память из файла. Файл с тестовым набором необходимо создать. Затем при необходимости изменить у него кодировку (в зависимости от того, в какой ОС Вы осуществляете программную реализацию). После этого для каждой записи берем в качестве ключа слово из исходного файла, а для информативной части его порядковый номер в исходном тексте. Для преобразования текстового файла в набор записей также необходимо выполнить программную реализацию, которая к тому же должна предусматривать создания определенного количества записей.

Пожалуйста, помогите переделать procedure mov, на метод Шелла для этой программы.

Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
{$r+}
uses crt,dos;
var max,Mi,Mj,bi,bj,q3:integer;
f1:file of char;
f2,f3:text;
q,q1:char;
s:string;
BOUND,t:integer;
a:array [1..30,1..1803] of char;
h_h,m_m,s_s,hund_h:word;
label B1,B2,B3,B4,B5,exit;
Function cmp(a1,a2:integer):byte;
var k:integer;
begin
cmp:=2;
for k:=1 to 20 do
begin
if ord(a[k,a1])>ord(a[k,a2]) then begin cmp:=1;break;end;
if ord(a[k,a1])<ord(a[k,a2]) then begin cmp:=0;break;end;
end;
end;
procedure mov(b1,b2:integer);
var
tmp: array [1..20] of char;
i1:integer;
begin
for i1:=1 to 20 do begin
tmp[i1]:=a[i1,b1];
a[i1,b1]:=a[i1,b2];
a[i1,b2]:=tmp[i1];
end;
 
end;
var i,j:integer;
begin
clrscr;
assign (f1,'D:\PO\1.txt');
assign (f2,'D:\PO\2.txt');
assign (f3,'D:\PO\3.txt');
reset (f1);
rewrite (f2);
rewrite (f3);
Mj:=1;
Mi:=1;
i:=1;
s:='1 ';
q1:='1';
while not eof(f1) do
begin
read (f1,q);
if (q <> (' ')) then
begin
if (q <> chr(10)) and (q <> chr(13)) then
s:=s+q;
a[Mi,Mj]:=q;
inc(Mi);
end
else if q1 <> ' ' then begin
if s='' then continue;
inc(i);
inc(Mj);
Mi:=1;
write (f2,s);
writeln(f2);
write (f2,i,' ');
s:='';
end;
q1:=q;
end;
{###################################################################}
{niinia ?1}
{###################################################################}
{niinia ?2}
{###################################################################}
{###################################################################}
{niinia ?3}
begin
writeln('__________________________________');
writeln('Sotirovka metodom prostih vstavok');
gettime(h_h,m_m,s_s,hund_h);
writeln('time ',h_h,':',m_m,':',s_s,'.',hund_h);
max:=1;
for j:=1803 downto 2 do
begin
for i:=1 to 1803 do
if cmp(i,max)=1 then max:=i;
mov(max,j);
end;
end;
gettime(h_h,m_m,s_s,hund_h);
writeln('time ',h_h,':',m_m,':',s_s,'.',hund_h);
writeln('__________________________________') ;
{###################################################################}
exit:
for mj:=1 to 1803 do
begin
for mi:=1 to 20 do
write(f3,a[Mi,Mj]);
writeln(f3);
end;
close (f1);
close (f2);
close (f3);
writeln('succesful! Press enter');
readln;
end.
Добавлено через 35 минут
........................................ .........

Добавлено через 7 часов 41 минуту
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{Сортировка одномерного массива методом Шелла}
procedure sortvec(var a:tvec;st,fn:integer;asc:boolean);
var
         i, j, k, s, m: integer;
         x: real;
begin
  for i:=st to fn-1 do begin
   k:=i;
   for j:=i+1 to fn do
     if ((a[j]<a[k]) and asc) or ((a[j]>a[k]) and not asc) then k:=j;
   if k<>i then begin
     x:=a[i];a[i]:=a[k];a[k]:=x;
   end;
  end;
end;
Добавлено через 1 минуту
Как эту процедуру переделать под мою программу???

Добавлено через 4 часа 38 минут
///////////////////////////
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.12.2010, 12:04
Ответы с готовыми решениями:

Метод Шелла
Помогите составить программу Провести сортировку последовательности а1, … , аn методом Шелла. ЗАранее спасибо

Метод Шелла
РЕбят помогите написать комменты для кажой строки. ЗАвтра зачет и будут проблемы чувствую у меня . ЗАдание. Провести сортировку...

Сортировка Шелла
Дан массив n действительных чисел. Требуется упорядочить его по возрастанию. Делается это следующим образом: сравниваются два соседних...

6
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
16.12.2010, 12:12
Идем сюда, в запросе пишем "Шелла", выбираем раздел Pascal, выбираем решение.
0
 Аватар для <..Оля..>
0 / 0 / 0
Регистрация: 05.10.2010
Сообщений: 17
23.12.2010, 00:06  [ТС]
Пожалуйста
0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
23.12.2010, 00:13
Ты в слова играешь что ли ? Ну хорошо, значит мне на "а"... Астра
0
 Аватар для <..Оля..>
0 / 0 / 0
Регистрация: 05.10.2010
Сообщений: 17
23.12.2010, 00:15  [ТС]
Почему играю? Просто очень нужно.
0
Почетный модератор
Эксперт по компьютерным сетямЭксперт Windows
 Аватар для magirus
28049 / 15785 / 983
Регистрация: 15.09.2009
Сообщений: 67,752
Записей в блоге: 78
23.12.2010, 00:30
<..Оля..>, Вам посоветовали воспользоваться поиском по форуму, ибо данная задача не один десяток раз уже решена.

Не по теме:


Цитата Сообщение от Inadequate Посмотреть сообщение
значит мне на "а"... Астра
так, мне тоже на "А" ... Анапа. :)

0
Retired
7727 / 2559 / 671
Регистрация: 17.10.2009
Сообщений: 5,100
23.12.2010, 00:33
Ну тогда может все таки ст0ит более внимательно прочесть пост #2 ?

Не по теме:

Цитата Сообщение от magirus Посмотреть сообщение
так, мне тоже на "А" ... Анапа. :)
Aфиша :)

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.12.2010, 00:33
Помогаю со студенческими работами здесь

Сортировка Шелла
Взял пример сортировки Шелла из этой темы. Вот так её сделал в программу, а она не сортирует, посмотрите плиз, что я неправильно сделал. ...

Сортировка Шелла
Дан одномерный массив. Все положительные элементы расположить в порядке возрастания, отрицательные - в порядке убывания, нулевые оставить...

Сортировка Шелла
1.Запрограммировать сортировку Шелла. 2.Реализуйте возможность повторить программу не запуская её заново и не повторяя код. Предоставьте...

Сортировка методом Шелла
Помогите нужно сделать самую простую програму для Сортировка методом Шелла, чтобы цифры я сам водил например: 2 10 5 3 1 4 7

Сортировка методом Шелла
Нужно написать програму для сортировки масива N чисел методом Шелла.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 09.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru