Простейший вариант программы, предполагающий, что строка записана абсолютно верно и содержит только числа, соединенные знаком "плюс".
const digits=['0'..'9']; var s,sn:string; i,err:integer; n,sum:longint;
begin Write('Введите числа, соединяя их знаком плюс: '); Readln(s); i:=2; sn:=s[1]; sum:=0; while i<=Length(s) do begin if s[i] in digits then sn:=sn+s[i] else begin Val(sn,n,err); sum:=sum+n; sn:='' end; Inc(i) end; Val(sn,n,err); sum:=sum+n; Writeln('Сумма равна ',sum) end.
Тестовое решение: Введите числа, соединяя их знаком плюс: 21+22+3 Сумма равна 46
Предполагается, что восьмеричное число записано, как символьная строка, поскольку максимальная разрядность не была оговорена в задании.
const m:array['0'..'7'] of string= ('000','001','010','011','100','101','110','111'); m1:array['1'..'7'] of string= ('1','10','11','100','101','110','111'); var s8,s2:string; i:integer; begin Write('Введите восьмеричное число: '); Readln(s8); s2:=m1[s8[1]]; for i:=2 to Length(s8) do s2:=s2+m[s8[i]]; Writeln('В двоичной системе: ',s2) end.
Тестовое решение: Введите восьмеричное число: 360721 В двоичной системе: 11110000111010001
const
digits=['0'..'9'];
var
s,sn:string;
i,err:integer;
n,sum:longint;
begin
Write('Введите числа, соединяя их знаком плюс: ');
Readln(s);
i:=2; sn:=s[1]; sum:=0;
while i<=Length(s) do begin
if s[i] in digits then sn:=sn+s[i]
else begin
Val(sn,n,err);
sum:=sum+n;
sn:=''
end;
Inc(i)
end;
Val(sn,n,err);
sum:=sum+n;
Writeln('Сумма равна ',sum)
end.
Тестовое решение:
Введите числа, соединяя их знаком плюс: 21+22+3
Сумма равна 46
const
m:array['0'..'7'] of string=
('000','001','010','011','100','101','110','111');
m1:array['1'..'7'] of string=
('1','10','11','100','101','110','111');
var
s8,s2:string;
i:integer;
begin
Write('Введите восьмеричное число: '); Readln(s8);
s2:=m1[s8[1]];
for i:=2 to Length(s8) do s2:=s2+m[s8[i]];
Writeln('В двоичной системе: ',s2)
end.
Тестовое решение:
Введите восьмеричное число: 360721
В двоичной системе: 11110000111010001