Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];
ВнизПомогите люди ошибка EInvalidOp, что делать? Найти похожие ветки
← →
Dimitriy.sd (2003-01-22 11:48) [0]//Для single типа ошибок переполения стека нет, а для extended
type
TDynFloatVector = array of Extended;
////----------------------------------------/////
//Пузырьковая сортировка
procedure BubbleSort(TypeSort: boolean; var A: TDynFloatVector);
var
Last_Swap, i, j, min, max: integer;
Tmp: extended;
begin
min := Low(A); max := High(A);
//Повторять пока не будет выполнено
while min < max do
begin
//Пузырек вверх
last_swap := min - 1;
i := min + 1;
while i <= max do
//Находим пузырек
case TypeSort of
True: if A[i - 1] > A[i] Then
begin
//Ищем где окрыть пузырек
tmp := A[i - 1];
j := i;
repeat
A[j - 1] := A[j];
j := j + 1;
until (A[j] > tmp) or (j > max);
A[j - 1] := tmp;
last_swap := j - 1;
i := j + 1;
end else i := i + 1;
False: if A[i - 1] < A[i] Then
begin
//Ищем где окрыть пузырек
tmp := A[i - 1];
j := i;
repeat
A[j - 1] := A[j];
j := j + 1;
until (A[j] < tmp) or (j > max);
A[j - 1] := tmp;
last_swap := j - 1;
i := j + 1;
end else i := i + 1;
end;
//Обновление максимального
max := last_swap - 1;
//Пузырек вниз
last_swap := max + 1;
// For i = max - 1 To min Step -1
i := max - 1;
while i >= min do
//Находим пузырек
case TypeSort of
True: if A[i + 1] < A[i] then //здесь возникает ошибка EInvalidOp при сортировке по возрастанию
begin
//Ищем где открыть пузырек
tmp := A[i + 1];
j := i;
repeat
A[j + 1] := A[j];
dec(j);
until (A[j] < tmp) or (j < min);
A[j + 1] := tmp;
last_swap := j + 1;
i := j - 1;
end else dec(i);
False: if A[i + 1] > A[i] then //здесь возникает ошибка EInvalidOp при сортировке по убыванию
begin
//Ищем где открыть пузырек
tmp := A[i + 1];
j := i;
repeat
A[j + 1] := A[j];
dec(j);
until (A[j] > tmp) or (j < min);
A[j + 1] := tmp;
last_swap := j + 1;
i := j - 1;
end else dec(i);
end;
//Обновляем минимальное
min := last_swap + 1;
end;
end;
Если есть время пожалуйста помогите. С уважением Дмитрий.
← →
Digitman (2003-01-22 11:56) [1]чтой-то ты намудрииил)
вот для образца пузырьковая сортировка по возрастанию
:
TDynFloatVector = array of Extended;
procedure BubbleSortUp(var A: TDynFloatVector);
var
I, J: Integer;
T: Extended
begin
for I := High(A) downto Low(A) do
for J := Low(A) to High(A) - 1 do
if A[J] > A[J + 1] then
begin
T := A[J];
A[J] := A[J + 1];
A[J + 1] := T;
end;
end;
← →
dimitriy.sd (2003-01-22 12:01) [2]Я эту вещь с Basica переводил. Огромное спасибо Digitman за ответ.
← →
Digitman (2003-01-22 12:10) [3]делать тебе нечего было))
открыл бы демо-проект в составе Делфи (threads.dpr обзывается), там тебе и пузырьковая и быстрая сортировки готовые - как на ладони) ... Заметь - работающие !)
← →
han_malign (2003-01-22 12:26) [4]Offtopic
To min Step -1 = downto min :))))
← →
dimitriy.sd (2003-01-22 12:30) [5]Han_malign я тебя не особо понял. Поясни.
Digitman я смотрел TThread examples. Thanks a lot.
← →
Digitman (2003-01-22 12:55) [6]
> dimitriy.sd
Не за фто)
Просто возьми себе за оч полезную привычку - прежде чем "изобретать велосипед", не поленись и полюбопытствуй, а нет ли аналогичных либо схожих готовых реализаций (фрагментов похоже работающего кода) среди демо-проектов... На то они и демо-проекты !) ... Зря что ли Борланд парился рисовать их для нас с тобой)
В данном случае нужно было всего лишь осуществить сквозной поиск pas-файлов в каталоге ($DELPHI) по кл.слову "bubblesort" как фрагменту текста - и давно бы уже на "велике" катался)))
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c