0
program345
11.09.14
✎
20:42
|
доброй ночи форумчанам!
товарижчи, написал прогу, только она при вводе числа 1000 в двоичной системе выдает 08 в шестнадцатиричной, а не просто 8 (как на ). как исправить ситуацию?
var
a:string;
b,c,g:integer;
procedure v10(a:string;b:integer;var g:integer); //a - число b - с какой системы счисления
var
c:char;
d,i,e,kod:integer;
f:integer;
begin
d:=length(a);
while d>0 do
begin
c:=a[d];
case c of
'0'..'9':val(c,e,kod);
'a','A':e:=10;
'b','B':e:=11;
'c','C':e:=12;
'd','D':e:=13;
'e','E':e:=14;
'f','F':e:=15;
else writeln('введенные символы не соответствуют ожиданиям!!!');
end;
f:=round(e*exp(i*ln(b)));
g:=g+f;
i:=i+1;
d:=d-1;
end;
//write(g);
end;
procedure is10(g,c:integer);
var
b:integer;
e,d:string;
begin
if g>1 then
is10(g div c,c);
b:=g mod c;
//write(b);
case b of
0..9:str(b,e);
10:e:='a';
11:e:='b';
12:e:='c';
13:e:='d';
14:e:='e';
15:e:='f';
else writeln('основание не может быть более 16!');
end;
write(e);
end;
begin
writeln('введите число для перевода в другую систему: ');
readln(a);
writeln('в какой оно системе счисления: ');
readln(b);
writeln('в какую систему переводим: ');
readln(c);
v10(a,b,g);
is10(g,c);
end.
|
|