var s, si, sf: string; powm, n10i: longint; i, j, m, ls, err, ni, nf: integer; a: double;
begin Write('Введите основание системы счисления (2..9): '); Readln(m); if not (m in [2..9]) then Writeln('Ну-ну...') else begin Write('Введите положительное число в этой системе счисления: '); Readln(s); ls := Length(Trim(s)); i := pos('.', s); if i > 0 then begin ni := i - 1; si := Copy(s, 1, ni); nf := ls - i; sf := Copy(s, i + 1, nf) end else begin si := s; ni := ls; sf := ''; nf := 0 end; powm := 1; n10i := 0; for i := ni downto 1 do begin Val(si[i], j, err); n10i := n10i + j * powm; powm := powm * m end; powm := m; a := 0; for i := 1 to nf do begin Val(sf[i], j, err); a := a + j / powm; powm := powm * m end; a := a + n10i; Writeln(s, '(', m, ')=', a, '(10)') end; end.
Тестовое решение:
Введите основание системы счисления (2..9): 8 Введите положительное число в этой системе счисления: 23532.5034 23532.5034(8)=10074.6318359375(10)
k = 50;
var
s, si, sf: string;
powm, n10i: longint;
i, j, m, ls, err, ni, nf: integer;
a: double;
begin
Write('Введите основание системы счисления (2..9): ');
Readln(m);
if not (m in [2..9]) then Writeln('Ну-ну...')
else begin
Write('Введите положительное число в этой системе счисления: ');
Readln(s);
ls := Length(Trim(s));
i := pos('.', s);
if i > 0 then begin
ni := i - 1; si := Copy(s, 1, ni);
nf := ls - i; sf := Copy(s, i + 1, nf)
end
else begin si := s; ni := ls; sf := ''; nf := 0 end;
powm := 1; n10i := 0;
for i := ni downto 1 do
begin
Val(si[i], j, err);
n10i := n10i + j * powm;
powm := powm * m
end;
powm := m; a := 0;
for i := 1 to nf do
begin
Val(sf[i], j, err);
a := a + j / powm;
powm := powm * m
end;
a := a + n10i;
Writeln(s, '(', m, ')=', a, '(10)')
end;
end.
Тестовое решение:
Введите основание системы счисления (2..9): 8
Введите положительное число в этой системе счисления: 23532.5034
23532.5034(8)=10074.6318359375(10)