Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.007 c
1-96680
Filat
2003-01-20 12:27
2003.01.30
ListView и ProgressBar, как совместить?


4-97069
Matolch
2002-12-12 13:06
2003.01.30
Что значит the default directory в параметрах функции?


7-97049
Seldon
2002-11-18 21:38
2003.01.30
CPU


3-96518
bilkm
2003-01-14 14:43
2003.01.30
Простой вопрос - Отмена действия навигатора


4-97100
kalishenko stas
2002-12-13 18:20
2003.01.30
DLL





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский