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

Тема в разделе "Pascal and Delphi", создана пользователем Vista, 6 апр 2012.

Статус темы:
Закрыта.
  1. Vista

    Vista Гость

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

    Код (Delphi):
    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.
     
  2. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    цена вопроса?)
     
  3. mss

    mss Гость

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

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

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

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

    Вот тебе и весь "перевод")
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей