Снег Север писал(а):Повторю еще раз
Вы что, пытаетесь мне отказать в праве высказать свою точку зрения?
Кмк я не оспаривал чьи-либо религиозные убеждения, поскольку, безусловно, понимаю, что это абсолютно бессмысленно.
Модератор: Модераторы
Снег Север писал(а):Повторю еще раз
zub писал(а):бреак выйдет из блока кода, гото может прыгать куда угодно
zub писал(а):это входит в какойто стандарт или следствие внутренней fpc реализации?
не имеет нормальная программа множественных вложенных циклов.
Снег Север писал(а):Соответственно, код, который малопонятен и нечитабелен - это говнокод. Вне зависимости от его прочих свойств.
zub писал(а):и чему там равно a3?
Ничему - в 1 ты не знаешь цикл отработал или прервался.
for a3:=1 to z2[0] do begin
if z2[a3]=0 then goto 1;
if a3=z2[0] then goto 1;
end;
goto 2;
1:
zub писал(а): С учетом того что в fpc на это не приделан варнинг, поиск и исправление этих ошибок в чужих исходниках (любителей гото и прочих извращений) превращается в грандиозный нетрадиционный секс
zub писал(а):Добавлено спустя 4 минуты 47 секунд:
https://bugs.freepascal.org/view.php?id=34248 после обновления компилятора программа перестала работать на ровном месте, циклы там рвались как goto так и бреак. конечно это не совсем в тему, но как пример пример наказания за чужие "лайфхаки"
for a3:=1 to 100 do begin
if z2[a3]=0 then goto 1;
2:
if a3=100 then goto 3;
end;
goto 3;
1: if .............. then goto 2;
3:
ООП - это очень хорошая задумка! И очень плохая реализация... Лезут все кому не лень, не зная программирования. Но ведь ООП терпит, в отличии от процедурного программирования, почему бы не навалить кучу кода? А потом этот код за основу берётся... )))Сквозняк писал(а):Какое замечательное описание ООП!
unit anysort;
{$ifdef fpc}{$mode delphi}{$endif}
interface
type
TCompareFunc = function (const elem1, elem2): Integer;
procedure AnySort(var Arr; Count: Integer; Stride: Integer; CompareFunc: TCompareFunc);
implementation
procedure AnyQuickSort(var Arr; idxL, idxH: Integer;
Stride: Integer; CompareFunc: TCompareFunc; var SwapBuf);
var
ls,hs : Integer;
li,hi : Integer;
mi : Integer;
ms : Integer;
pb : PByte;
begin
pb:=@Arr;
li:=idxL;
hi:=idxH;
mi:=li+(hi-li) div 2;
ls:=li*Stride;
hs:=hi*Stride;
ms:=mi*Stride;
repeat
while CompareFunc( pb[ls], pb[ms] ) < 0 do begin
inc(ls, Stride);
inc(li);
end;
while CompareFunc( pb[ms], pb[hs] ) < 0 do begin
dec(hs, Stride);
dec(hi);
end;
if ls <= hs then begin
Move(pb[ls], SwapBuf, Stride);
Move(pb[hs], pb[ls], Stride);
Move(SwapBuf, pb[hs], Stride);
if li = mi then
ms := hs
else
if hi = mi then
ms := ls;
inc(ls, Stride); inc(li);
dec(hs, Stride); dec(hi);
end;
until ls>hs;
if hi>idxL then AnyQuickSort(Arr, idxL, hi, Stride, CompareFunc, SwapBuf);
if li<idxH then AnyQuickSort(Arr, li, idxH, Stride, CompareFunc, SwapBuf);
end;
procedure AnySort(var Arr; Count: Integer; Stride: Integer; CompareFunc: TCompareFunc);
var
buf: array of byte;
begin
if Count > 1 then
begin
SetLength(buf, Stride);
AnyQuickSort(Arr, 0, Count-1, Stride, compareFunc, buf[0]);
end;
end;
end.
Seenkao писал(а):iskander, честно говоря, не до сортировки массивов сейчас
procedure BubbleSort(var a: array of Integer);
var
I, Tmp: Integer;
Done: Boolean;
begin
if Length(a) > 1 then
repeat
Done := True;
for I := 1 to High(a) do
if a[I - 1] > a[I] then begin
Done := False;
Tmp := a[I];
a[I] := a[I - 1];
a[I - 1] := Tmp;
end;
until Done;
end;
runewalsh писал(а):Там, кстати, автор — @скалогрыз, можешь его трясти.
runewalsh писал(а):Вторая ошибка — ^array[word] of byte вместо просто pByte.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9