Помогите решить пожалуйста!
Даны два числа в десятичной системе счисления. Написать программу, которая выполняет следующие действия:
1.Перевести оба числа в двоичную систему счисления.
2.Выполнить над переведенными числами операцию деления.
3.Выполнить операцию деления над числами в десятичной системе счисления и перевести результат в данную систему счисления.
4.Сравнить полученные результаты.
а на что делить эти числа?
первое число разделить на второе, первое число - 312, второе - 6
все ясно
Я уже можно сказать решил но осталось это http://forum.pascalnet.ru/index.php?showtopic=24826
перевести в двоичную я тоже смог))сам не понимаю как числа делить в двоичной, если бы знал возможно бы написал программу сам)
мне так объяснили в той теме как двоичный код делят но я чего то не могу алгоритм сделать может быть кто то другой тебе решит эту задачю
сам попробую, я просто не знал как деление выполняется)) нам в университете объясняли с восстановлением остатка и без восстановления остатка, я ни чего не понял т.к практики не было никакой
program Noname0;
var j,i,d,b,k:integer;
xc,x,xx,xy:int64;
p:array [1..2] of int64;
a:array [1..2] of integer;
m:array [0..2] of 0..30;
y:array [1..2,0..17] of 0..1;
{**********s desetricnoi v dvoicnuju**********}
procedure dv(a,i:integer);
begin
j:=0;
while a<>0 do
begin
inc(j);
y[i,j]:=a mod 2;
a:=a div 2;
end;
m[i]:=j;
end;
begin
writeln('vvedite dva cislo');
for i:=1 to 2 do
begin
readln(a[i]);
dv(a[i],i);
end;
for i:=1 to 2 do
begin
for j:=m[i] downto 1 do
write(y[i,j]);
writeln ;
end;
{********eto v odno cislo dvoicniji odno cislo}
x:=1;
i:=2;
b:=m[i];
k:=10;
for d:=m[i] downto 1 do
begin
for j:=1 to b-1 do
x:=x*k;
dec(b);
xc:=xc+x*y[i,d];
x:=1;
end;
p[i]:=xc;
writeln(p[i]);
xc:=0;
{*************************************************888}
{ eto delenije dokonca nedonisano }
x:=1;
i:=1;
k:=10;
b:=0;
for d:=m[i] downto 1 do
begin
inc(b);
for j:=1 to b-1 do
x:=x*k;
if x=0 then xc:=xc+y[i,d]
else xc:=xc*k+y[i,d];
x:=1;
if xc>=p[2] then
begin
xx:=xc;
xy:=p[2];
end
end;
p[i]:=xc;
writeln(p[i]);
xc:=0;
{*************8tyt***************}
{ xc:=p[1] div p[2];
writeln(xc); }
{**********************tut**************}
{ i:=1;
while p[1]<>1 do
begin
y[1,i]:=p[1] mod 10;
p[1]:=p[1] div 10;
inc(i);
end;
for j:=i downto 1 do
write(y[1,j]);
writeln;
k:=0; }
{******s 2 v 10}
{ k:=0;
for j:=i downto 1 do
k:=k*2+y[1,j];
writeln(y[1,j]); }
readln ;
end.
немогу придумать как делить двоичные коды в програмке я
program Noname0;
var j,i,d,b,k:integer;
xc,x,xx,xy:int64;
p:array [1..2] of int64;
a:array [1..2] of integer;
m:array [0..2] of 0..30;
y:array [1..2,0..17] of 0..1;
{**********s desetricnoi v dvoicnuju**********}
procedure dv(a,i:integer);
begin
j:=0;
while a<>0 do
begin
inc(j);
y[i,j]:=a mod 2;
a:=a div 2;
end;
m[i]:=j;
end;
begin
writeln('vvedite dva cislo');
for i:=1 to 2 do
begin
readln(a[i]);
dv(a[i],i);
end;
{************vivodim masiv dvoicnix cisel *****************************}
for i:=1 to 2 do
begin
write('cisla v masive ');
begin
for j:=m[i] downto 1 do
write(y[i,j]);
writeln ;
end;
writeln;
end;
{********berem delitel vtoroe cislo i delaem kak odno cislo}
x:=1;
i:=2;
b:=m[i];
k:=10;
for d:=m[i] downto 1 do
begin
for j:=1 to b-1 do
x:=x*k;
dec(b);
xc:=xc+x*y[i,d];
x:=1;
end;
p[i]:=xc;
writeln('odno cislo ',p[i]);
writeln;
{ eto delenije dokonca nedonisano }
xc:=0;
x:=1;
i:=1;
k:=10;
b:=0;
for d:=m[i] downto 1 do
begin
inc(b);
for j:=1 to b-1 do
x:=x*k; {mozet tut ctoto lisneje no vse vivodit normalno}
if x=0 then xc:=xc+y[i,d]
else xc:=xc*k+y[i,d];
x:=1;
if xc>=p[2] then {sravnivaem cisla delimoe bolse togda delim esli}
begin
xx:=xc;
xy:=p[2]; {nenapisal kak delit }
end
end;
p[i]:=xc;
writeln(p[i]);
xc:=0;
readln ;
end.
а как будет выглядеть вся написанная программа?