Урок 17 (Решенная задача номер 8)
Primary tabs
Урок 17 (Решенная задача номер 8)
На вход вашей программы подается строка вида:
5 + 6 -34 + 56 - 7 + 2("сколько угодно" чисел с операциями суммы и разности в любом порядке). Вычислите результат (пробелов между символом операции и числом может и не быть)
var s : string;
function ru36(h : string): integer;
var g, znak : string;
i, c, cisl1, cisl2 : integer;
d : boolean;
begin
for i := 1 to length(s) do
begin
if (s[i] >= '0') and (s[i] <= '9') and (d = false) then
begin
g := g + s[i];
if (s[i+1] = ' ') or (s[i + 1] = '+') or (s[i+1] = '-') then
begin
d := true;
val(g, cisl1, c);
g := '';
end;
end;
if (s[i] = '-') or (s[i] = '+') then
znak := s[i];
if (znak <> '') and (s[i] >= '0') and (s[i] <= '9') then
begin
g := g + s[i];
if (s[i+1] = ' ') or (s[i + 1] = '+') or (s[i+1] = '-')
or (i = length(s)) then
begin
val(g, cisl2, c);
g := '';
end;
end;
if (cisl2 <> 0) then
if (znak = '+') then
begin
result := (cisl1 + cisl2);
cisl1 := result;
cisl2 := 0;
znak := '';
end
else
begin
result := (cisl1 - cisl2);
cisl1 := result;
cisl2 := 0;
znak := '';
end;
end;
writeln(result);
end;
begin
writeln('vvedite viragenie');
readln(s);
ru36(s);
end.
- Log in to post comments
- 1183 reads