Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 1
Регистрация: 17.06.2015
Сообщений: 45

Сортировка массива методом простых вставок

23.06.2015, 19:02. Показов 749. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте,программисты.Нужно найти и исправить ошибку в программе,она считает не корректно, скрин кину.

Условие:Нужно в паскале просортировать массив А=[аі] без уменьшения методом простых вставок.
Сам метод в гугле:
Кликните здесь для просмотра всего текста
Метод простых вставок

Последовательно просматриваем a1 , …, an-1 и каждый новый элемент ai вставляем на подходящее место в уже упорядоченную совокупность ai-1 , …, a1 . Это место определяется последовательным сравнением ai с упорядоченными элементами a0 , …, ai-1 .

(*************************************** ****************
Процедура для сортировки массива.
Принимает:
*массив значений a с индексами элементов от 0 до N-1
*число элементов N
**************************************** ***************)
Code
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
procedure InsertionSort(var Arr : array of Real; N : Integer);
var
I : Integer;
J : Integer;
K : Integer;
Tmp : Real;
begin
dec(N);
i:=1;
repeat
j:=0;
repeat
if Arr[i]<=Arr[j] then
begin
k:=i;
Tmp:=Arr[i];
repeat
Arr[k]:=Arr[k-1];
dec(k);
until not(k>j);
Arr[j]:=Tmp;
j:=i;
end
else inc(j);
until not(j<i);
inc(i);
until not(i<=n);
end;


Мой модуль:
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
Unit GTA;
interface
type
massiv=array[1..1000] of real;
procedure Theft(var A:massiv;d:integer); 
procedure Grand(var A:massiv;f:integer); 
procedure Autov(var A:massiv;f:integer); 
implementation 
Procedure Grand(var A:massiv;f:integer); 
Var i,n:integer; 
begin 
n:=f;
for i:=1 to n do
begin
write('A[',i,'] = ');
readln(A[i]);
end;
end;
Procedure Autov(var A:massiv;f:integer); 
Var i,n:integer; 
begin 
n:=f;
for i:=1 to n do 
begin
writeln('A[',i,'] =',A[i]:3:0);
end;
end;
Procedure Theft(var A:massiv;d:integer); 
Var 
i,imax,n:integer; 
Max:real;
Begin
n:=d;
for i:=1 to n-1 do 
begin
if (A[i]>A[i+1]) then 
begin
Max:=A[i];
imax:=i;
A[i]:=A[i+1];
A[i+1]:=Max;
end;
end;
end;
end.
Программа использующая модуль:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Program lab5; 
Uses Crt,GTA; 
Const m=6;
Var
i,j,imax:integer;
A:massiv;
Max:real;
BEGIN
ClrScr;
Grand(A,6);
for j:=1 to m do
begin
Theft(A,j);
end;
writeln;
Autov(A,6);
readln;
END.
Она вроде работает,но иногда считает нормально,а иногда не корректно.
Помогите пожалуйста.

Нормально:
Code
A[1] = 2
A[2] = 4
A[3] = 1
A[4] = 5
A[5] = 3
A[6] = 6
 
A[1] =  1
A[2] =  2
A[3] =  3
A[4] =  4
A[5] =  5
A[6] =  6
Не нормально:
Code
A[1] = -22
A[2] = 4
A[3] = 99
A[4] = 2
A[5] = 6
A[6] = 3
 
A[1] =-22
A[2] =  2
A[3] =  4
A[4] =  6
A[5] =  3
A[6] =-99
Добавлено через 21 час 35 минут
Работает.
Модуль:
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
Unit GTA;
interface
type
massiv=array[1..1000] of real;
procedure Theft(var A:massiv;d:integer); 
procedure Grand(var A:massiv;f:integer); 
procedure Autov(var A:massiv;f:integer); 
implementation 
Procedure Grand(var A:massiv;f:integer); 
Var i,n:integer; 
begin 
n:=f;
for i:=1 to n do
begin
write('A[',i,'] = ');
readln(A[i]);
end;
end;
Procedure Autov(var A:massiv;f:integer); 
Var i,n:integer; 
begin 
n:=f;
for i:=1 to n do 
begin
writeln('A[',i,'] =',A[i]:3:0);
end;
end;
Procedure Theft(var A:massiv;d:integer); 
Var 
i,imax,n:integer; 
Max:real;
Begin
n:=d;
for i:=1 to n-1 do 
begin
if (A[i]>A[i+1]) then 
begin
Max:=A[i];
imax:=i;
A[i]:=A[i+1];
A[i+1]:=Max;
end;
end;
end;
end.
Программа:
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Program lab5; 
Uses Crt,GTA; 
Const m=6;
Var
i,j,imax:integer;
A:massiv;
Max:real;
BEGIN
ClrScr;
Grand(A,6);
for j:=1 to m do
begin
Theft(A,6);
end;
writeln;
Autov(A,6);
readln;
END.

Добавлено через 5 часов 28 минут
Сделал,о боги,тупости моей не было предела...Модеры,если надо - удаляйте тему.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.06.2015, 19:02
Ответы с готовыми решениями:

Сортировка методом простых вставок четных элементов массива.
Нужно написать программу сортировки методом простых вставок четных элементов массива.

Дан массив А, состоящий из n натуральных чисел. Упорядочите элементы массива методом простых вставок
Дан массив А, состоящий из n натуральных чисел. Упорядочите элементы массива методом простых вставок.

Сортировка методом вставок
Нужен код, сортирующий строки матрицы по возрастанию методом вставок. Матрица 5x5.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.06.2015, 19:02
Помогаю со студенческими работами здесь

Сортировка массива способом бинарных вставок
Здраствуйте. Помогите пожалуйста исправить код. Условие: Дана матрица NxM, упорядочить ее строки так, что бы первые элементы образовали...

Написать программу сортировки линейного массива вещественных чисел методом вставок
Написать программу сортировки линейного массива вещественных чисел методом вставок.Элементы отсортировать по возрастанию.Алгоритм...

Разработать процедуру сортировки массива методом простых вставок
uses crt; const Nmax=100; type myarray=array of integer; procedure Sort(n:integer; var A:myarray); label metln; var k, j, c,...

Отсортировать строки произвольной матрицы по убыванию методом простых вставок
Отсортировать строки произвольной матрицы по убыванию методом простых вставок.

Расположение символов в алфавитном порядке, выведение наибольшего числа методом простых вставок..
:help:Мне нужно зделать в С++ Борланд Билдер: Расположение символов в алфавитном порядке, выведение наибольшего числа методом простых...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru