Предмет: Информатика,
автор: kmdnc
как решаются такие задачи? как называются темы в учебниках?
Приложения:
Ответы
Автор ответа:
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
//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
Предмет: Психология,
автор: aleshakarmazin
Предмет: Геометрия,
автор: Olykolo
Предмет: Математика,
автор: sharifovanarmina