|
#1
|
|||
|
|||
Задачка
Помогите, не могу решить в Delphi задачку
Число в любой системе исчисления разлогается по степенях основы системы исчисления, например,10101(2)=2^4+2²+2º=2(10),это же число в системе исчисления Фибоначи:10101(f)=f6+f4+f2=8+3+1=12(10). Описать разные обьекты для перевода одного числа, записанного последовательностью 0 и1 (0 и 1 не должны стоять рядом) в 10-тичную систему исчисления с двоичной и системы Фибоначи P.S. Просто не умею описать в Delphi, в Паскале такую задачу решила... |
#2
|
||||
|
||||
Выкладывай решение на паскале, переписать под Delphi тебе поможем.
|
#3
|
|||
|
|||
Решение на Паскале задачки
program des;
const n=20; var x:string; d,l,i,R:word; f:array[1..n] of word; function dv (y:string):real; var n,i,j:word; d,m:real; begin n:=length(y); m:=0; for i:=n downto 1 do if copy(y,i,1)='1' then begin d:=0.5; for j:=0 to n-i do d:=d*2; m:=m+d; end; dv:=m; end; function x11(y:string):byte; var i:word; begin x11:=0; for i:=1 to length(y)-1 do if copy (y,i,2)='11' then x11:=1; end; begin f[1]:=1; f[2]=2; for i:=3 to n do f[i]:=f[i-1]+f[i-2]; write ('cislo digital:'); readln(x); while x11(x)=1 do begin write('1 , 1 stoyat ryadom!Nelzya!'Cislo digital: ');readln(x); end; l:=length(x); R:=0; for i:=1 to l do if copy (x,i,1)='1' then begin d:=f[l-i+1]; R:=R+d; end; writeln('fibon.:',R); writeln('desatk.:',dv(x):0:0); readln; end. P.S. Нада описать в consol application Последний раз редактировалось Lera, 22.12.2006 в 18:18. |
#4
|
||||
|
||||
Так тут практически ничего не меняется
Код:
program Project1; {$APPTYPE CONSOLE} uses SysUtils; const n = 20; var x: string; d, l, i, R: word; f: array[1..n] of word; function dv( y: string ): real; var n, i, j: word; d, m: real; begin n := length( y ); m := 0; for i := n downto 1 do if copy(y,i,1) = '1' then begin d := 0.5; for j:= 0 to n-i do d := d*2; m := m+d; end; dv := m; end; function x11( y: string ): byte; var i: word; begin x11 := 0; for i := 1 to length( y )-1 do if copy( y, i, 2 )= '11' then x11 := 1; end; begin f[1] := 1; f[2] := 2; for i := 3 to n do f[i] := f[i-1] + f[i-2]; write( 'cislo digital:' ); readln( x ); while x11( x ) = 1 do begin write( '1 , 1 stoyat ryadom!Nelzya!''Cislo digital: ' ); readln( x ); end; l := length( x ); R := 0; for i := 1 to l do if copy (x, i, 1) = '1' then begin d := f[l-i+1]; R := R+d; end; writeln( 'fibon.:', R ); writeln( 'desatk.:', dv(x):0:0 ); readln; end. |