Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 21.12.2006, 17:24
Lera Lera вне форума
Прохожий
 
Регистрация: 19.12.2006
Сообщения: 2
Репутация: 10
По умолчанию Задачка

Помогите, не могу решить в 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  
Старый 22.12.2006, 05:48
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Выкладывай решение на паскале, переписать под Delphi тебе поможем.
Ответить с цитированием
  #3  
Старый 22.12.2006, 18:10
Lera Lera вне форума
Прохожий
 
Регистрация: 19.12.2006
Сообщения: 2
Репутация: 10
По умолчанию Решение на Паскале задачки

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  
Старый 22.12.2006, 19:13
Аватар для Decoding
Decoding Decoding вне форума
Местный
 
Регистрация: 03.06.2006
Адрес: Почту найдете на моем сайте
Сообщения: 576
Версия Delphi: D10.2
Репутация: 214
По умолчанию

Так тут практически ничего не меняется
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<b>program</b> Project1;
  
<font color="royalblue"><i>{$APPTYPE CONSOLE}</i></font>
  
<b>uses</b>
  SysUtils;
  
<b>const</b>
  n = <font color="royalblue">20</font>;
  
<b>var</b>
  x: <b>string</b>;
  d, l, i, R: word;
  f: <b>array</b>[<font color="royalblue">1</font>..n] <b>of</b> word;
  
<b>function</b> dv( y: <b>string</b> ): real;
<b>var</b>
  n, i, j: word;
  d, m: real;
<b>begin</b>
   n := length( y );
   m := 0;
   <b>for</b> i := n <b>downto</b> 1 <b>do</b>
      <b>if</b> copy(y,i,1) = <font color="royalblue">'1'</font> <b>then</b>
      <b>begin</b>
         d := <font color="royalblue">0.5</font>;
         <b>for</b> j:= <font color="royalblue">0</font> <b>to</b> n-i <b>do</b>
            d := d*<font color="royalblue">2</font>;
         m := m+d;
      <b>end</b>;
   dv := m;
<b>end</b>;
  
<b>function</b> x11( y: <b>string</b> ): byte;
<b>var</b>
  i: word;
<b>begin</b>
   x11 := <font color="royalblue">0</font>;
   <b>for</b> i := <font color="royalblue">1</font> <b>to</b> length( y )-<font color="royalblue">1</font> <b>do</b>
      <b>if</b> copy( y, i, <font color="royalblue">2</font> )= <font color="royalblue">'11'</font> <b>then</b>
         x11 := <font color="royalblue">1</font>;
<b>end</b>;
  
<b>begin</b>
   f[<font color="royalblue">1</font>] := <font color="royalblue">1</font>;
   f[<font color="royalblue">2</font>] := <font color="royalblue">2</font>;
   <b>for</b> i := <font color="royalblue">3</font> <b>to</b> n <b>do</b>
      f[i] := f[i-<font color="royalblue">1</font>] + f[i-<font color="royalblue">2</font>];
   write( 'cislo digital:' );
   readln( x );
   <b>while</b> x11( x ) = <font color="royalblue">1</font> <b>do</b>
   <b>begin</b>
      write( <font color="royalblue">'1 , 1 stoyat ryadom!Nelzya!''Cislo digital: '</font> );
      readln( x );
   <b>end</b>;
   l := length( x );
   R := <font color="royalblue">0</font>;
   <b>for</b> i := <font color="royalblue">1</font> to l <b>do</b>
      <b>if</b> copy (x, i, <font color="royalblue">1</font>) = <font color="royalblue">'1'</font> <b>then</b>
      <b>begin</b>
         d := f[l-i+<font color="royalblue">1</font>];
         R := R+d;
      end;
   writeln( <font color="royalblue">'fibon.:'</font>, R );
   writeln( <font color="royalblue">'desatk.:'</font>, dv(x):<font color="royalblue">0</font>:<font color="royalblue">0</font> );
   readln;
<b>end</b>.
Ответить с цитированием
Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:41.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025