- 1
- 2
- 3
- 4
- 5
function IPP (var i: integer): integer;
begin
Result := i;
Inc(i);
end;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+76
function IPP (var i: integer): integer;
begin
Result := i;
Inc(i);
end;
+99
Я в 2006 году учился работать на Дельфи.
var
Form1: TForm1; f:file of byte; rb,re:array[0..6,0..10] of byte;
rb1,re1:array[1..6] of byte;h:shortint;go:boolean;
tm:array[0..6,0..1,0..10] of record
h,m:byte;
end;
...
procedure prnt1;
var t:string;
begin
{Вывод времени уроков и перемен на форму. Начало 0,1. 11 уроков 2-23}
str(rb1[h],t);
form1.edit1.text:=t;
str(re1[h],t);
form1.edit2.text:=t;
str(rb[h,0],t);
form1.edit3.text:=t;
str(re[h,0],t);
form1.edit4.text:=t;
str(rb[h,1],t);
form1.edit5.text:=t;
...
form1.edit21.text:=t;
str(re[h,9],t);
form1.edit22.text:=t;
str(rb[h,10],t);
form1.edit23.text:=t;
end;
...
procedure prnt2;
var t1,t2,t3,t4:string;a1,a2,b1,b2,c,d:integer;
begin
{Вывод списка уроков из текстового файла на форму}
val(form1.edit1.text,a1,c);
val(form1.edit2.text,a2,c);
rb1[h]:=a1;
re1[h]:=a2;
{1 урок}
b1:=a1;
b2:=a2;
val(form1.edit3.text,d,c);
rb[h,0]:=d;
b2:=b2+d;
if b2>=60 then
begin
b1:=b1+1;
b2:=b2-60;
end;
str(a1,t1);
str(a2,t2);
if a2<10 then t2:='0'+t2;
str(b1,t3);
str(b2,t4);
if b2<10 then t4:='0'+t4;
tm[h,0,0].h:=a1;
tm[h,0,0].m:=a2;
tm[h,1,0].h:=b1;
tm[h,1,0].m:=b2;
form1.label15.Caption:=t1+':'+t2+' - '+t3+':'+t4;
val(form1.edit4.text,d,c);
re[h,0]:=d;
b2:=b2+d;
if b2>=60 then
begin
b1:=b1+1;
b2:=b2-60;
end;
{2 урок}
a1:=b1;
a2:=b2;
val(form1.edit5.text,d,c);
rb[h,1]:=d;
b2:=b2+d;
if b2>=60 then
begin
b1:=b1+1;
b2:=b2-60;
end;
str(a1,t1);
str(a2,t2);
и т.д. (так 11 уроков и перемен по 30 строк)
{Сохранение в базу данных под названием zvonok.ini :-) }
val(form1.edit1.text,rb1[h],d);
val(form1.edit2.text,re1[h],d);
val(form1.edit3.text,rb[h,0],d);
val(form1.edit4.text,re[h,0],d);
val(form1.edit5.text,rb[h,1],d);
val(form1.edit6.text,re[h,1],d);
val(form1.edit7.text,rb[h,2],d);
val(form1.edit8.text,re[h,2],d);
val(form1.edit9.text,rb[h,3],d);
val(form1.edit10.text,re[h,3],d);
и так до 11-го урока
Программа для подачи сигналов секретарю, что пора дать звонок на урок или на перемену.
+84
uses crt;
type point=record{точки}
x,y:real;
end;
okr=record{окружности}
x,y,r:real;
end;
const nmax=20;
function Peres(a,b:point;c:okr):boolean;{пересекаются или нет}
var s,ab,h:real;
begin
s:=abs(a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y));{удвоенная площадь треугольника
вершины которого центр окружности и 2 точки}
ab:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));{сторона, противоположная центру окружности}
h:=s/ab;{высота на нее=расстояние от центра до прямой}
Peres:=h<c.r;{если лно меньше радиуса, пересекаются}
end;
var a:array[1..nmax] of point;
b:array[1..nmax] of okr;
n,m,i,j,k,p,mx,imx,jmx:integer;
begin
clrscr;
randomize;
repeat
write('Количество точек до ',nmax,' n=');
readln(n);
until n in [1..nmax];
repeat
write('Количество окружностей до ',nmax,' m=');
readln(m);
until m in [1..nmax];
for i:=1 to n do
begin
a[i].x:=-10+random*21;
a[i].y:=-10+random*21;
end;
for i:=1 to m do
begin
b[i].x:=-5+11*random;
b[i].y:=-5+11*random;
b[i].r:=5*random;
end;
writeln('Координаты точек:');
write('X:');
for i:=1 to n do
write(a[i].x:6:2);
writeln;
write('Y:');
for i:=1 to n do
write(a[i].y:6:2);
writeln;
writeln;
writeln('Параметры окружностей:');
write('X:');
for i:=1 to m do
write(b[i].x:6:2);
writeln;
write('Y:');
for i:=1 to m do
write(b[i].y:6:2);
writeln;
write('R:');
for i:=1 to m do
write(b[i].r:6:2);
writeln;
writeln;
mx:=0;
imx:=0;
jmx:=0;
for i:=1 to n-1 do
for j:=i+1 to n do
begin
k:=0;
for p:=1 to m do
if Peres(a[i],a[j],b[p]) then k:=k+1;
if k>mx then
begin
mx:=k;
imx:=i;
jmx:=j;
end;
end;
if mx=0 then write('Нет пересекающихся прямых и окружностей')
else
begin
writeln('Максимальное число пересечений прямой с окружностями=',mx);
write('Эта прямая проходит через точки (',a[imx].x:0:2,';',a[imx].y:0:2,') и (',a[jmx].x:0:2,';',a[jmx].y:0:2,')');
end;
readln
end.
Рекурсивная функций с циклами тройной вложенности
+103
if (s[n][c]='1')and(s[n][c+1]='0')and(s[n+1][c]='0')and(n=1)and(c=1) then writeln('*');
if (s[n][c]='1')and(s[n][c-1]='0')and(s[n+1][c]='0')and(s[n][c+1]='0')and(n=1) then writeln('*');
if (s[n][c]='1')and(s[n][c-1]='0')and(s[n+1][c]='0')and(n=1)and(c=10) then writeln('*');
if (s[n][c]='1')and(s[n-1][c]='0')and(s[n][c-1]='0')and(s[n+1][c]='0')and(c=10) then writeln('*');
if (s[n][c]='1')and(s[n-1][c]='0')and(s[n][c-1]='0')and(n=10)and(c=10) then writeln('*');
if (s[n][c]='1')and(s[n][c+1]='0')and(s[n-1][c]='0')and(s[n][c-1]='0')and(n=10) then writeln('*');
if (s[n][c]='1')and(s[n][c+1]='0')and(s[n-1][c]='0')and(n=10)and(c=1) then writeln('*');
if (s[n][c]='1')and(s[n+1][c]='0')and(s[n][c+1]='0')and(s[n-1][c]='0')and(c=1) then writeln('*');
if (s[n][c]='1')and(s[n][c+1]='.')and(s[n+1][c]='.')and(n=1)and(c=1) then writeln('*');
if (s[n][c]='1')and(s[n][c-1]='.')and(s[n+1][c]='.')and(s[n][c+1]='.')and(n=1) then writeln('*');
if (s[n][c]='1')and(s[n][c-1]='.')and(s[n+1][c]='.')and(n=1)and(c=10) then writeln('*');
if (s[n][c]='1')and(s[n-1][c]='.')and(s[n][c-1]='.')and(s[n+1][c]='.')and(c=10) then writeln('*');
if (s[n][c]='1')and(s[n-1][c]='.')and(s[n][c-1]='.')and(n=10)and(c=10) then writeln('*');
if (s[n][c]='1')and(s[n][c+1]='.')and(s[n-1][c]='.')and(s[n][c-1]='.')and(n=10) then writeln('*');
if (s[n][c]='1')and(s[n][c+1]='.')and(s[n-1][c]='.')and(n=10)and(c=1) then writeln('*');
if (s[n][c]='1')and(s[n+1][c]='.')and(s[n][c+1]='.')and(s[n-1][c]='.')and(c=1) then writeln('*');
Конец решения первой задачи все из той же дистанционки.
На этот раз мопед не мой, а одной юной дамы.
Вот за ЭТО я и недолюбливаю Паскаль: иногда код хер прочитаешь. А еще путаница с типами. И логикой. Гы.
+78
{$ifdef Profile}
{$define __TRACE__:= try Profile_TraceCall}
{$define __END__:=finally Profile_LeaveCall; end;}
{$else}
{$define __TRACE__:= //}
{$define __END__:=}
{$endif}
procedure Foo();
begin
__TRACE__('Foo');
...
__END__
end;
FPC.
+100
procedure print(RTK_select:boolean; RLK_select:boolen;MOLK_select:boolean)
begin
if (RTK_select and not RLK_select and not MOLK_select) then
Excel.ActiveWorkBook.WorkSheets[1].Range['B4'] := 'РТК';
if (not RTK_select and RLK_select and not MOLK_select) then
Excel.ActiveWorkBook.WorkSheets[1].Range['B4'] := 'РЛК';
if (not RTK_select and not RLK_select and MOLK_select) then
Excel.ActiveWorkBook.WorkSheets[1].Range['B4'] := 'МОЛК';
if (RTK_select and RLK_select and not MOLK_select) then
Excel.ActiveWorkBook.WorkSheets[1].Range['B4'] := 'РТК,РЛК';
if (not RTK_select and RLK_select and MOLK_select) then
Excel.ActiveWorkBook.WorkSheets[1].Range['B4'] := 'РЛК,МОЛК';
if (RTK_select and not RLK_select and MOLK_select) then
Excel.ActiveWorkBook.WorkSheets[1].Range['B4'] := 'РТК,МОЛК';
if (RTK_select and RLK_select and MOLK_select) then
Excel.ActiveWorkBook.WorkSheets[1].Range['B4'] := 'РТК,РЛК,МОЛК';
if (not RTK_select and not RLK_select and not MOLK_select) then
Excel.ActiveWorkBook.WorkSheets[1].Range['B4'] := '';
end
Обнаружено в недрах старинного проекта. Запись строчки по флажкам.
+96
procedure TForm1.FormCreate(Sender: TObject);
var formattedDateTime : string; S: TSearchRec; sf : Int64;
begin
Application.OnException := MyHandler;
if IsRunningEXEName(ExtractFileName(Application.ExeName)) = true then
begin
Application.Terminate;
Exit;
end;
Попытка запретить запуск копии программы. Неудачная.
+93
begin
if n=15 then
begin
a:=7200*56*99*12*13*14*15;
end
else
begin
if n=16 then
begin
a:=7200*56*99*12*13*14*15*16;
end
else
begin
if n=17 then
begin
a:=7200*56*99*12*13*14*15*16*17;
end
else
begin
if n=18 then
begin
a:=7200*56*99*12*13*14*15*16*17*18;
end
else
begin
if n=19 then
begin
a:=7200*56*99*12*13*14*15*16*17*18*19;
end
else
begin
if n=20 then
begin
a:=144000*56*99*12*13*14*15*16*17*18*19;
end
else
begin
if n=21 then
begin
a:=144000*56*99*12*13*14*15*16*17*18*19*21;
end
else
begin
if n=22 then
begin
a:=144000*56*99*12*13*14*15*16*17*18*19*21*22;
end
else
begin
if n=23 then
begin
a:=144000*56*99*12*13*14*15*16*17*18*19*21*22*23;
end
else
begin
if n=24 then
begin
a:=144000*56*99*12*13*14*15*16*17*18*19*21*22*23*24;
end
else
begin
if n=25 then
begin
a:=144000*56*99*12*13*14*15*16*17*18*19*21*22*23*24*25;
end
else
begin
if n=26 then
begin
a:=144000*56*99*12*13*14*15*16*17*18*19*21*22*23*24*25*26;
end
else
begin
if n=27 then
begin
a:=144000*56*99*12*13*14*15*16*17*18*19*21*22*23*24*25*26*27;
end
else
begin
if n=28 then
begin
a:=144000*56*99*12*13*14*15*16*17*18*19*21*22*23*24*25*26*27*28;
end
else
begin
if n=29 then
begin
a:=144000*56*99*12*13*14*15*16*17*18*19*21*22*23*24*25*26*27*28*29;
end
else
begin
if n=30 then
begin
a:=144000*56*99*12*13*14*15*16*17*18*19*21*22*23*24*25*26*27*28*29*30;
end
else
begin
if n=31 then
begin
+93
s := ' . ';
IF fGamma >= 1000 THEN s[1] := CHR (ORD ('0') + fGamma DIV 1000);
s[2] := CHR (ORD ('0') + fGamma DIV 100 MOD 10);
s[4] := CHR (ORD ('0') + fGamma DIV 10 MOD 10);
s[5] := CHR (ORD ('0') + fGamma MOD 10);
Перевод числа в строку.
Из исходников Photoshop 1.0.1
http://bit.ly/W11p5e
Там на первый взгляд хватает копипасты. Но особо не углублялся.
+86
Function TMainForm.PrimGenerateMaze(Width, Height: Integer): Maze;
Type Point = record
x, y: Integer;
end;
Var
TehMaze: Maze;
Todo: array of Point;
todonum: integer;
x,y,n,d: integer;
Const
dx: array [0..3] of Integer = (0, 0, -1, 1);
dy: array [0..3] of Integer = (-1, 1, 0, 0);
BEGIN
SetLength(TehMaze, Width, Height);
SetLength(Todo, (Width * Height) - 1);
For x:=0 to Width-1 do
For y:=0 to Height-1 do
If (x = 0) or (x = Width-1) or (y = 0) or (y = Height-1) then
TehMaze[x][y]:=32
Else TehMaze[x][y]:=63;
Randomize;
x := Random(Width-2)+1;
y := Random(Height-2)+1;
todonum := 0;
TehMaze[x][y]:= TehMaze[x][y] and not 48; // Пометить клетку как принадлежащую лабиринту
// Пока не обработаны все клетки
Repeat
Begin
// Занести в список todo все ближайшие необработанные клетки
For d:=0 to 3 do
if (TehMaze[x + dx[d]][y + dy[d]] and 16) <> 0 then
Begin
todo[todonum].x := x + dx[d];
todo[todonum].y := y + dy[d];
Inc(todonum);
TehMaze[x + dx[d]][y + dy[d]] := TehMaze[x + dx[d]][y + dy[d]] and not 16;
End;
// Выбрать из списка todo произвольную клетку
n:= Random(todoNum);
x:= ToDo[n].x;
y:= ToDo[n].y;
// Удалить из списка обработанную клетку
Dec(todonum);
ToDo[n]:= todo[todonum];
// Выбрать направление, которое ведет к лабиринту
Repeat
d:=Random(4);
Until ((TehMaze[x + dx[d]][y + dy[d]] and 32) = 0);
// Присоединить выбранную клетку к лабиринту
TehMaze[x][y] := TehMaze[x][y] and not ((1 shl d) or 32);
TehMaze[x + dx[d]][y + dy[d]] := TehMaze[x + dx[d]][y + dy[d]] and not (1 shl (d xor 1));
End;
Until (todonum = 0);
TehMaze[1][1] := TehMaze[1][1] and -2; // начало лабиринта - в левом верхнем углу
TehMaze[Width-2][Height-2] := TehMaze[Width-2][Height-2] and not 2; // конец лабиринта - в правом нижнем углу
Result := TehMaze;
END;
Генерация лабиринтов по алгоритму Прима.