![]()  | 
	
 
  | 
| 
		 
			 
			#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. |