Ответ:
var
s: string;
i,b,a: integer;
d,k: double;
f,e: boolean;
c: char;
begin
Write('Введите основание системы: ');
ReadLn(b);
e:=b<=1;
if e then
WriteLn('Ошибка: основание системы должно быть не менее 2')
else begin
Write('Введите число в системе с основанием ',b,': ');
ReadLn(s);
f:=false;
k:=1;
for i:=1 to Length(s) do begin
if f then k:=k/b;
c:=UpCase(s[i]);
a:=-1;
case c of
'0'..'9': a:=Ord(c)-48;
'A'..'Z': a:=Ord(c)-55;
'.',',': if f then e:=true else f:=true;
else f:=true
end;
e:=e or (a>=b);
if e then break;
if a>=0 then d:=d*b+a
WriteLn('Ошибка в записи числа')
else
WriteLn('Значение в десятичной системе: ',d*k)
Readln;
end.
Может так?
Copyright © 2024 SCHOLAR.TIPS - All rights reserved.
Answers & Comments
Ответ:
var
s: string;
i,b,a: integer;
d,k: double;
f,e: boolean;
c: char;
begin
Write('Введите основание системы: ');
ReadLn(b);
e:=b<=1;
if e then
WriteLn('Ошибка: основание системы должно быть не менее 2')
else begin
Write('Введите число в системе с основанием ',b,': ');
ReadLn(s);
f:=false;
k:=1;
for i:=1 to Length(s) do begin
if f then k:=k/b;
c:=UpCase(s[i]);
a:=-1;
case c of
'0'..'9': a:=Ord(c)-48;
'A'..'Z': a:=Ord(c)-55;
'.',',': if f then e:=true else f:=true;
else f:=true
end;
e:=e or (a>=b);
if e then break;
if a>=0 then d:=d*b+a
end;
if e then
WriteLn('Ошибка в записи числа')
else
WriteLn('Значение в десятичной системе: ',d*k)
end;
Readln;
end.
Может так?