• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Перевод Проги

  • Автор темы Vista
  • Дата начала
Статус
Закрыто для дальнейших ответов.
V

Vista

помогите перевести программу с паскаля на делфи чтобы было визуально видно. не могу разобраться в коде. он не мой

Код:
const
v:array[1..5,1..5] of string[2]=(('00','0*','','**',''),('0*','01','*1','',''),
('','*1','11','1*',''),('**','','1*','10','*0'),('','','','*0',''));
var
i,j,l,k,n,s,ss,s1,xi,xj,f,z,x,q:integer;
a,b:array[1..5,1..5] of integer;
st:string;
procedure dec(q:String);
begin
n:=0;
For i:= 1 To Length(q) do
If copy(q, i, 1) = '1' Then n:= n + trunc(exp(ln(2)*(Length(q) - i)));
If n = 3 Then n:= n - 1 Else If n = 2 Then n:= n + 1
End;
Function pr(x,y,x1,y1:byte):integer;
var
i,j,k:integer;
begin
k:=0;
for i:=x to x1 do
for j:=y to y1 do
if b[i,j]=0 then inc(k);
if k=0 then k:=-1;
pr:=k
end;
begin
writeln;
readln(st);st:=st+' ';
While st <> '' do begin
for i:=1 to pos(' ',st) do
if st[i]='*' then begin st[i]:='1'; insert(st[1]+st[2]+st[3]+st[4]+' ',st,6); st[i]:='0' end;
dec(st[1] + st[2]); k:= n; dec(copy(st, 3, pos(' ',st) - 3));
a[n+1, k+1]:= 1;
delete(st,1,pos(' ',st))
End;
for i:=1 to 4 do
a[i,5]:=a[i,1];
for i:=1 to 5 do
a[5,i]:=a[1,i];
s1:=1;
while s1>0 do begin
s1:=0; s:=0;
for i:=1 to 5 do
for j:=1 to 5 do
if (a[i,j]>0) and (i>1) then a[i,j]:=a[i-1,j]+1;
for i:=1 to 5 do begin q:=1;
for j:=1 to 5 do
if a[i,j]=0 then q:=j+1 else
for l:=q to j do begin
if a[i,l]>a[i,j] then a[i,l]:=a[i,j];
z:=trunc(exp(trunc(ln(a[i,l])/ln(2))*ln(2)));
x:=trunc(exp(trunc(ln(j-l+1)/ln(2))*ln(2)));
ss:=pr(i-z+1,j-x+1,i,j);
if (ss>s) or ((ss=s) and (s1<z*x)) then begin
s1:=z*x; s:=ss; xi:=i; xj:=j; f:=x;
end
end;
end;
if s1>0 then write(v[xj-f+1,xj]+v[xi,xi+1-s1 div f]+' ');
for i:=1 to s1 div f do
for j:=xj-f+1 to xj do begin
b[xi-i+1,j]:=1;
if xi-i+1=5 then b[1,j]:=1;
if j=5 then b[xi-i+1,1]:=1;
if xi-i+1=1 then b[5,j]:=1;
if j=1 then b[xi-i+1,5]:=1;
if(j=1) and (xi-i+1=1) then b[5,5]:=1;
if(j=1) and (xi-i+1=5) then b[1,5]:=1;
if(j=5) and (xi-i+1=1) then b[5,1]:=1;
if(j=5) and (xi-i+1=5) then b[1,1]:=1;
end;
end;
end.
 
M

mss

> чтобы было визуально видно

Для этого в программе предусмотрены операторы ReadLn и WriteLn

> перевести программу с паскаля на делфи

Добавь сразу после строчки с оператором program строчку
{$APPTYPE CONSOLE}

Вот тебе и весь "перевод")
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!