Простейший вариант программы, предполагающий, что строка записана абсолютно верно и содержит только числа, соединенные знаком "плюс".
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
procedure tf; var q,j:longint; o:array[1..10] of longint; begin write(m[1],' '); q:=1; o[q]:=m[1]; i:=1; while q<>3 do begin i:=i+1;
if q=1 then if m[i]<>o[1] then begin write(m[i],' '); q:=q+1; o[q]:=m[i]; end;
if q=2 then if (m[i]<>o[1]) and (m[i]<>o[2]) then begin write(m[i]); q:=q+1; end; end; end;
procedure tm; var mk:array[1..10] of longint; begin for i:=1 to 3 do mk[i]:=0;
for i:=1 to n do if mk[1]<m[i] then begin mk[3]:=mk[2]; mk[2]:=mk[1]; mk[1]:=m[i]; end else if (mk[2]<m[i]) and (m[i]<>mk[1]) then begin mk[3]:=mk[2]; mk[2]:=m[i]; end else if (mk[3]<m[i]) and (mk[2]<>m[i]) then mk[3]:=m[i];
write(mk[1],' ',mk[2],' ',mk[3]); end;
Скорее всего это можно было написать чище и оптимальнее, но вот моё решение на скорую руку
0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota
Оформи подписку