** вход программе подаётся последовательность символов, заканчивающаяся точкой (точка –...

0 голосов
220 просмотров

На вход программе подаётся последовательность символов, заканчивающаяся точкой (точка – признак конца и в последовательность не входит). Данная последовательность является правильной записью арифметического выражения, состоящего из целых десятичных чисел и знаков «плюс» и «минус» (могут стоять и перед первым числом). При этом два знака подряд в выражении не допускается. Программа должна вычислить значения данного выражения и вывести его на экран. Гарантируется, что ни на каком этапе вычислений тип longint не переполнится. Пример: введено «234-234+657.», программа должна вывести «657».


Информатика (343 баллов) | 220 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

Var s,s1:string; sum,a,code,i:integer;
begin
writeln('Введите выражение:');
readln(s);
sum:=0;
s1:='';
for i:=1 to length(s) do
 case s[i] of
 '0'..'9'    : s1:=s1+s[i];
 '-','+','.' : begin val(s1,a,code); sum:=sum+a; s1:=s[i]; end;
 end;
writeln('sum = ',sum);
end.

Пример:
Введите выражение:
234-234+657.
sum = 657

(194k баллов)
0

проверьте ещё раз свой код. Он неверен. при вводе выражения сумма 0

0

Программа не проверяет правильность ввода данных. По условию задачи "На вход программе подаётся последовательность символов, заканчивающаяся точкой" и "последовательность является правильной записью арифметического выражения, состоящего из целых десятичных чисел и знаков «плюс» и «минус»".