Урок 17. Задача №8. Решение.
Primary tabs
На вход вашей программы подается строка вида:
5 + 6 -34 + 56 - 7 + 2("сколько угодно" чисел с операциями суммы и разности в любом порядке). Вычислите результат (пробелов между символом операции и числом может и не быть).
type MyArr = array[1..6] of integer; ArrSt = array[1..5] of string; function Check_tmp(s: string; mas: MyArr): MyArr; var a: integer; begin if(s <> '') then begin val(s, a); mas[6] := a; end; result := mas; end; function GetRes(arrInt: MyArr; arrStr: ArrSt; x: integer): integer; var j, i: integer; begin if(arrStr[1] = '+') then x := arrInt[1] + arrInt[2] else x := arrInt[1] - arrInt[2]; j := 3; for i := 2 to length(arrStr) do begin if(arrStr[i] = '+') then x := x + arrInt[j] else x := x - arrInt[j]; j += 1; end; result := x; end; var str, tmp: string; key: boolean; i, j, k, conv, res: integer; arr: MyArr; arrSig: ArrSt; begin writeln('Enter math operation string: '); readln(str); for i := 1 to length(str) do begin key := false; if(str[i] >= '0') and (str[i] <= '9') then tmp += str[i] else if(str[i] = '+') or (str[i] = '-') then begin k += 1; arrSig[k] := str[i]; key := true; end; if(key = true) and (tmp <> '') then begin val(tmp, conv); j += 1; arr[j] := conv; tmp := ''; end; end; arr := Check_tmp(tmp, arr); writeln(); writeln('Result is this math operation = ', GetRes(arr, arrSig, res)); readln(); // Удержание консоль end.// Завершение программы
- Log in to post comments
- 4183 reads
vedro-compota
Wed, 05/27/2020 - 19:55
Permalink
завернуть в процедуру
завернуть в процедуру получение массива действий и значений
_____________
матфак вгу и остальная классика =)
Firons
Sat, 05/30/2020 - 18:18
Permalink
Исправлено.
vedro-compota
Wed, 06/03/2020 - 20:01
Permalink
замечание
-- переделать без третьего аргумента.
_____________
матфак вгу и остальная классика =)
Firons
Thu, 06/04/2020 - 20:43
Permalink
Исправлено.
vedro-compota
Sat, 06/06/2020 - 20:16
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)