Урок 17 (решенная задача номер 9)
Primary tabs
Урок 17 (решенная задача номер 9)
Задана последовательность символов, имеющая следующий вид: p1q1p2q2p3...qn–1pn , где pi — цифра, а qi — знак арифметического действия из набора {+, –, *}. Вычислите значение выражения, предполагая, что действия выполняются согласно правилам арифметики.
Входные данные: На вход программе подается строка указанного вида, состоящая не более чем из 9 чисел, разделенных символами арифметических операций.
Выходные данные: Выведите значение арифметического выражения.
Примеры:Входные данные Результат 5+2 7 1-2*5+2 -7 5*6+7-3*2+11 42 5*6+7-3*2*3+11 30
type mastring = array[1..10] of string; mascisl = array[1..10] of integer; var stroka : string; procedure cubik(h:string; var cismas:mascisl; var znakmas:mastring); var g : string; v, c, i, s, j, k : integer; begin s := 1; j := 1; k := 0; for i := 1 to length(h) do begin if (h[i] >= '0') and (h[i] <= '9') or (h[i] = '-') then g := g + h[i]; if (h[i+1] = '+') or (h[i+1] = '-') or (h[i+1] = '*') or (i = length(h)) then begin val(g, cismas[s], c); Inc(s); g := ''; Inc(k); end; if (h[i] = '+') or (h[i] = '-') then begin znakmas[j] := '+'; Inc(j); end else if (h[i] = '*') then begin znakmas[j] := '*'; Inc(j); end; end; i := 0; end; function rubika(hi : string): integer; var i, l : integer; bydytliechodeystv : boolean; f : mascisl; y : mastring; begin bydytliechodeystv := false; i := 1; result := 1; cubik(hi, f, y); while (i < high(f)) do begin if (y[i] = '*') then begin f[i] := f[i] * f[i+1]; l := i; i := 1; result := result * f[l]; while (f[l] <> 0) do begin f[l+1] := f[l+2]; y[l] := y[l+1]; Inc(l); end; end; Inc(i); end; i := 0; for i := 1 to high(y) do begin if (y[i] = '+') then begin if (bydytliechodeystv = false) then begin result := f[1]; bydytliechodeystv := true; end; result := result + f[i+1]; end; end; end; begin stroka := '10+12*33*56-72-57*31-46'; write(rubika(stroka)); end.
- Log in to post comments
- 1618 reads
vedro-compota
Sun, 10/18/2020 - 20:41
Permalink
решение засчитано
решение засчитано
_____________
матфак вгу и остальная классика =)