Вот так, что-ли:
Код | var s, sub: string; coeff: array['A' .. 'Z'] of integer; i, p, err, coef: integer; letter: char;
const sign: array[boolean] of char = ('+', '-');
begin i := 1; s := '8*A-3*B+6*A+B+11*C-23*a+4*b'; repeat sub := '+'; repeat if s[i] = '-' then sub := '-' else if s[i] = '+' then else sub := sub + s[i]; inc(i); until (i > length(s)) or (s[i] in ['+', '-']);
coef := 1; letter := upcase(sub[2]); p := pos('*', sub); if p > 0 then begin val(copy(sub, 2, p - 2), coef, err); letter := upcase(sub[p + 1]); end; if sub[1] = '-' then coef := - coef; coeff[letter] := coeff[letter] + coef;
until i > length(s); writeln('result:'); for letter := 'A' to 'Z' do if coeff[letter] <> 0 then write(sign[coeff[letter] < 0]:2, abs(coeff[letter]):3, '*', letter); writeln; end.
|
? |