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)