Contributor: MATTHEW BUAS program Base_Change; uses crt; var num,base: integer; mult2,emult2,emult2old,num2:integer; fl: integer; {------------------------------------------------} function getMult (number:integer): integer; var cur,flag:integer; begin if (number >= 2) then begin cur:=2; if (cur < number) and ((cur * 2) <= number) then begin repeat cur:=cur * 2; until ((cur*2) > number); end; getMult:=cur; end else getMult:=1; end; {------------------------------------------------} {log base 2 function} function ex (number:integer): integer; var flag1:integer; begin if (number >= 2) then begin flag1:=0; repeat number:=number div 2; flag1:=flag1+1; until (number < 2); ex:=flag1; end {if} else ex:=0; end; {------------------------------------------------} begin clrscr; textcolor(15); writeln('Base Change'); normvideo; writeln; write('Number: '); readln(num); { write('Base (2-10): '); readln(base); } write('Binary: '); fl:=0; repeat mult2:=getMult(num); { writeln(mult2);} emult2:=ex(mult2); num:=num-mult2; if (fl=0) then begin write('1'); end else begin repeat if (emult2old-emult2 > 1) then begin write('0'); emult2old:=emult2old-1; end; until (emult2old-emult2=1); write('1'); end; emult2old:=emult2; fl:=fl+1; until (num=0); if (emult2 <> 0) then begin repeat write('0'); emult2:=emult2-1; until (emult2=0); end; writeln; end.