Предмет: Информатика, автор: kmdnc

как решаются такие задачи? как называются темы в учебниках?

Приложения:

Ответы

Автор ответа: Gleb1Kosyrev
0
//Наверное, "Операции с строками"
//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
Похожие вопросы
Предмет: Алгебра, автор: dashashemelewa