//Наверное, "Операции с строками" //Pascal ABC.NET 3.1 сборка 1256
Var ars:array of string; s:string; i,n,r10:integer; se:set of char;
function ss5to10(s:string):integer; Var i,r:integer; begin for i:=1 to length(s) div 2 do swap(s[i],s[length(s)-i+1]); for i:=0 to length(s)-1 do r:=r+strtoint(s[i+1])*round(power(5,i)); ss5to10:=r; end;
function ss10to5(a:integer):integer; Var i,r:integer; s:string; begin while a>=5 do begin s+=inttostr(a mod 5); a:=a div 5; end; s:=s+inttostr(a); for i:=1 to length(s) div 2 do swap(s[i],s[length(s)-i+1]); ss10to5:=strtoint(s); end;
begin n:=0; se:=['0'..'4']; readln(s); if s[1]='.' then begin writeln('Результат в десятичной системе счисления:1'); write('Результат в пятеричной системе счисления:1'); exit; end; if s[1] in se then begin inc(n); setlength(ars,n); ars[n-1]:=s[1]; end; for i:=2 to length(s) do begin if s[i]='.' then break; if s[i] in se then if s[i-1] in se then ars[n-1]+=s[i] else begin inc(n); setlength(ars,n); ars[n-1]:=s[i]; end; end; for i:=0 to n-1 do r10+=ss5to10(ars[i]); if n=0 then begin writeln('Результат в десятичной системе счисления:1'); write('Результат в пятеричной системе счисления:1'); end else begin writeln('Результат в десятичной системе счисления:',r10); write('Результат в пятеричной системе счисления:',ss10to5(r10)); end; end.
Пример ввода: sdf812973j223k. Пример вывода: Результат в десятичной системе счисления:73 Результат в пятеричной системе счисления:243
Answers & Comments
Verified answer
//Наверное, "Операции с строками"//Pascal ABC.NET 3.1 сборка 1256
Var
ars:array of string;
s:string;
i,n,r10:integer;
se:set of char;
function ss5to10(s:string):integer;
Var
i,r:integer;
begin
for i:=1 to length(s) div 2 do
swap(s[i],s[length(s)-i+1]);
for i:=0 to length(s)-1 do
r:=r+strtoint(s[i+1])*round(power(5,i));
ss5to10:=r;
end;
function ss10to5(a:integer):integer;
Var
i,r:integer;
s:string;
begin
while a>=5 do
begin
s+=inttostr(a mod 5);
a:=a div 5;
end;
s:=s+inttostr(a);
for i:=1 to length(s) div 2 do
swap(s[i],s[length(s)-i+1]);
ss10to5:=strtoint(s);
end;
begin
n:=0;
se:=['0'..'4'];
readln(s);
if s[1]='.' then
begin
writeln('Результат в десятичной системе счисления:1');
write('Результат в пятеричной системе счисления:1');
exit;
end;
if s[1] in se then
begin
inc(n);
setlength(ars,n);
ars[n-1]:=s[1];
end;
for i:=2 to length(s) do
begin
if s[i]='.' then break;
if s[i] in se then
if s[i-1] in se then
ars[n-1]+=s[i]
else
begin
inc(n);
setlength(ars,n);
ars[n-1]:=s[i];
end;
end;
for i:=0 to n-1 do
r10+=ss5to10(ars[i]);
if n=0 then
begin
writeln('Результат в десятичной системе счисления:1');
write('Результат в пятеричной системе счисления:1');
end
else
begin
writeln('Результат в десятичной системе счисления:',r10);
write('Результат в пятеричной системе счисления:',ss10to5(r10));
end;
end.
Пример ввода:
sdf812973j223k.
Пример вывода:
Результат в десятичной системе счисления:73
Результат в пятеричной системе счисления:243