Даны два числа в десятичной системе счисления. Написать программу, которая выполняет следующие действия: 1.Перевести оба числа в двоичную систему счисления. 2.Выполнить над переведенными числами операцию деления. 3.Выполнить операцию деления над числами в десятичной системе счисления и перевести результат в данную систему счисления. 4.Сравнить полученные результаты.
maksimla
24.10.2009 18:24
а на что делить эти числа?
bakalava92
24.10.2009 18:36
первое число разделить на второе, первое число - 312, второе - 6
перевести в двоичную я тоже смог))сам не понимаю как числа делить в двоичной, если бы знал возможно бы написал программу сам)
maksimla
25.10.2009 19:39
мне так объяснили в той теме как двоичный код делят но я чего то не могу алгоритм сделать может быть кто то другой тебе решит эту задачю
bakalava92
25.10.2009 19:56
сам попробую, я просто не знал как деление выполняется)) нам в университете объясняли с восстановлением остатка и без восстановления остатка, я ни чего не понял т.к практики не было никакой
maksimla
25.10.2009 20:10
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.
вот что я сделал тогнее немогу даделать еще деления двоичной системы
andriano
26.10.2009 2:21
Цитата(bakalava92 @ 24.10.2009 20:19)
перевести в двоичную я тоже смог))сам не понимаю как числа делить в двоичной, если бы знал возможно бы написал программу сам)
В двоичной делят точно так же, как и в десятичной. Только проще. Делят, естественно, в столбик. Только если в десятичной нужно подбирать очередную цифру частного так, чтобы по максимуму использовать остаток от предыдущего деления, то в двоичном этот этап не нужен: если остаток больше делителя - вычитаем и записываем в частное "1", если меньше - записываем в частное "0".
maksimla
26.10.2009 13:52
немогу придумать как делить двоичные коды в програмке я
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.
русофоб
19.05.2015 5:09
а как будет выглядеть вся написанная программа?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.