написать программу вычисления двоичного представления числа
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
ПОсмотрите вот наброски .но он в массив неправильно начинает заносить значения
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.
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.
Блин, я так не могу, john_1, тут сплошные вложения - выложи с тэгом. Тяжело ведь читать народу, не то что понять.
It's a long way to the top if you wanna rock'n'roll
ДА вот чото тэги не хотят работать у меня(((((((
загони так в паскаль или делфу
загони так в паскаль или делфу
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.
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.
вопрос такой :
дан массив 2 4 8 16 32 64(длина не важна)
переделать его в такой 2 4 9 9 8 4
т.е перевести массив в число(перенося разряды)
дан массив 2 4 8 16 32 64(длина не важна)
переделать его в такой 2 4 9 9 8 4
т.е перевести массив в число(перенося разряды)
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
офф
john_1, отредактируй свои сообщения используя тэги
john_1, отредактируй свои сообщения используя тэги
Код: Выделить всё
или [syntax="delphi"] c соответствующим закрывающим тэгом
скобки у тэгов - строго квадратные!

Код: Выделить всё
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.
john_1, куда то ты не туда поехал ... Каждый элемент массива есть степень числа 2. Позволь тебя спросить, какое число у тебя будет в 32 элементе, или 50-ом, например?
Я понял твою мысль, но поверь, копаешь не туда ...
Я понял твою мысль, но поверь, копаешь не туда ...
It's a long way to the top if you wanna rock'n'roll
ну если сделать так 10/5 100/25 1000/125.то и получится 2 4 8 фактически потом если с разрядами повозиться то и получится искомое число.или я не прав?
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