написать программу вычисления двоичного представления числа

Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду

john_1
Сообщения: 19
Зарегистрирован: 16 ноя 2006, 07:18

ПОсмотрите вот наброски .но он в массив неправильно начинает заносить значения
uses crt;
var
a,b:array[1..100] of byte;
w:array[1..200] of byte;
n,x,i,k,j:integer;
begin
for i:=1 to 100 do a:=0;
n:=1;
k:=1;
for j:=1 to 8 do
begin
k:=k*5;
n:=1;
for i:=1 to 100 do
begin
if n<k then
begin
n:=n*10;
b:=0;
end else
begin
b:=(n div k);
x:=n mod k;
n:=n-k*b;
if n<k then n:=n*10;
end;
end;
for i:=1 to 100 do
begin
a[100-i+1]:=a[100-i+1]+b[100-i+1];
if a[100-i+1]>9 then
begin
a[100-i]:=a[100-i]+(a[100-i+1] div 10);
a[100-i+1]:=(a[100-i+1] mod 10);
end;
end;
end;
for j:=1 to 200 do
begin
for i:=1 to 100 do
begin
a[100-i+1]:=2*a[100-i+1];
if a[100-i+1]>9 then
begin
a[100-i]:=a[100-i]+(a[100-i+1] div 10);
a[100-i+1]:=(a[100-i+1] mod 10);
end;
end;
if a[1]=2 then w[j]:=1 else
begin
a[1]:=0;
w[j]:=0;
end;
end;
for i:=1 to 100 do write(w);
readln;
clrscr;
end.
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

Блин, я так не могу, john_1, тут сплошные вложения - выложи с тэгом. Тяжело ведь читать народу, не то что понять.
It's a long way to the top if you wanna rock'n'roll
john_1
Сообщения: 19
Зарегистрирован: 16 ноя 2006, 07:18

ДА вот чото тэги не хотят работать у меня(((((((
загони так в паскаль или делфу
john_1
Сообщения: 19
Зарегистрирован: 16 ноя 2006, 07:18

uses crt;
var
a,b:array[1..100] of longint;
w:array[1..200] of longint;
n,x,i,k,j:integer;
begin
for i:=1 to 100 do a:=0;
n:=1;
k:=1;
b[1]:=0;
b[2]:=10 div 5;
for i:=3 to 20 do
begin
b:=(b[i-1]*10) div 5;
writeln(b);
end;
for i:=1 to 100 do
begin
a[100-i+1]:=a[100-i+1]+b[100-i+1];
if a[100-i+1]>9 then
begin
a[100-i]:=a[100-i]+(a[100-i+1] div 10);
a[100-i+1]:=(a[100-i+1] mod 10);
end;
end;

for j:=1 to 200 do
begin
for i:=1 to 100 do
begin
a[100-i+1]:=2*a[100-i+1];
if a[100-i+1]>9 then
begin
a[100-i]:=a[100-i]+(a[100-i+1] div 10);
a[100-i+1]:=(a[100-i+1] mod 10);
end;
end;
if a[1]=2 then w[j]:=1 else
begin
a[1]:=0;
w[j]:=0;
end;
end;
for i:=1 to 100 do write(w);
readln;
clrscr;
end.
john_1
Сообщения: 19
Зарегистрирован: 16 ноя 2006, 07:18

вопрос такой :
дан массив 2 4 8 16 32 64(длина не важна)
переделать его в такой 2 4 9 9 8 4
т.е перевести массив в число(перенося разряды)
Аватара пользователя
Игорь Акопян
Сообщения: 1440
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

офф
john_1, отредактируй свои сообщения используя тэги

Код: Выделить всё

 или [syntax="delphi"] c соответствующим закрывающим тэгом
скобки у тэгов - строго квадратные!
Изображение
john_1
Сообщения: 19
Зарегистрирован: 16 ноя 2006, 07:18

Код: Выделить всё

uses crt;
var
 a,b:array[1..100] of longint;
 w:array[1..200] of longint;
 n,x,i,k,j,z:integer;
begin
  for i:=1 to 100 do a[i]:=0;
  n:=1;
  k:=1;
  b[1]:=0;
  b[2]:=10 div 5;
  for i:=3 to 21 do
  begin
    b[i]:=(b[i-1]*10) div 5;
  end;
  for i:=2 to 21 do
  begin
    a[1]:=b[1];
    a[21-i+1]:=b[21-i+1];
    if a[21-i+1]>9 then
    begin
      x:=(a[21-i+1] div 10);
      a[21-i+1]:=(b[21-i+1] mod 10);
      a[21-i]:=x+b[21-i];
    end;
    for i:=1 to 21 do {-------}
    begin
      write(a[i]);
    end;              {---------}
  end;

  for j:=1 to 200 do
  begin
    for i:=1 to 100 do
    begin
      a[100-i+1]:=2*a[100-i+1];
      if a[100-i+1]>9 then
      begin
        a[100-i]:=a[100-i]+(a[100-i+1] div 10);
        a[100-i+1]:=(a[100-i+1] mod 10);
      end;
    end;
    if a[1]=2 then w[j]:=1 else
    begin
      a[1]:=0;
      w[j]:=0;
    end;
  end;
  for i:=1 to 100 do write(w[i]);
  readln;
  clrscr;
end.
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

john_1, куда то ты не туда поехал ... Каждый элемент массива есть степень числа 2. Позволь тебя спросить, какое число у тебя будет в 32 элементе, или 50-ом, например?

Я понял твою мысль, но поверь, копаешь не туда ...
It's a long way to the top if you wanna rock'n'roll
john_1
Сообщения: 19
Зарегистрирован: 16 ноя 2006, 07:18

ну если сделать так 10/5 100/25 1000/125.то и получится 2 4 8 фактически потом если с разрядами повозиться то и получится искомое число.или я не прав?
Аватара пользователя
somewhere
Сообщения: 1858
Зарегистрирован: 31 авг 2006, 17:14
Откуда: 71 RUS
Контактная информация:

john_1, ты знаешь, в этом что-то есть. Если вынести за скобки самый маленький член (во сказал!), т.е. Е = 1/(5^N), то все остальные есть 5^K * E. Только вот надо сначала его записать в двоичном представлении - без деления не обойтись, а я только "столбиком" делить могу, а это долго. Возможно и громоздко, но завтра выложу. К тому же 1/(5^N) в двоичном представлении не точно, значит (Е * 5^N) <> 1. Так что лучше уж считать каждую дробь в отдельности.
It's a long way to the top if you wanna rock'n'roll
Закрыто