Главная страница
    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
4-97088
Vicheslav
2002-12-15 14:17
2003.01.30
моя прога (Место)(без) Explorer


3-96561
yaric
2003-01-10 17:55
2003.01.30
Проблема с IBQuery и DLL


9-96504
LM
2002-07-28 23:51
2003.01.30
DELPHIX - 2d Engine


4-97074
alex134
2002-12-10 17:22
2003.01.30
тИП ЛОВУШКИ?


3-96550
RDA
2003-01-10 16:30
2003.01.30
Без темы.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский