Задача 8 Урок 17
Primary tabs
На вход вашей программы подается строка вида:
5 + 6 -34 + 56 - 7 + 2
("сколько угодно" чисел с операциями суммы и разности в любом порядке). Вычислите результат (пробелов между символом операции и числом может и не быть.)
program lesson17_8;
type
myArrStr = array[1..10] of string;
myArrInt = array[1..10] of integer;
function strToArrStr(s: string): myArrStr;
var
a: myArrStr;
b: boolean;
i, k: integer;
begin
k := 0;
b := false;
for i := low(a) to high(a) do
a[i] := '';
for i := 1 to length(s) do
if (s[i] >= '0') and (s[i] <= '9') then
begin
if not b then
begin
k := k + 1;
if k > high(a) then
begin
k := k - 1;
break;
end;
end;
a[k] := a[k] + s[i];
b := true;
end
else if b then
b := false;
result := a;
end;
function arrStrToArrInt(a: myArrStr): myArrInt;
var
n: myArrInt;
i: integer;
begin
for i := low(a) to high(a) do
begin
if a[i] <> '' then
val(a[i], n[i])
else
n[i] := 0;
end;
result := n;
end;
function strToStrSym(s: string): string;
var
sym: string = '';
i: integer;
begin
for i := 1 to length(s) do
if (s[i] = '+') or (s[i] = '-') then
sym := sym + s[i];
result := sym;
end;
var
arr: myArrStr;
num: myArrInt;
s, symbol: string;
i, n: integer;
begin
writeln('enter the expression: ');
readln(s);
arr := strToArrStr(s);
num := arrStrToArrInt(arr);
symbol := strToStrSym(s);
n := num[1];
for i := 1 to length(symbol) do
if symbol[i] = '+' then
n := n + num[i + 1]
else
n := n - num[i + 1];
writeln(n);
readln();
end.- Log in to post comments
- 1643 reads
vedro-compota
Sat, 09/11/2021 - 11:31
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)