Есть ответ 👍

Текст (например, арифметическое выражение) содержит многократно вложенные круглые скобки. исправить его, оставив скобки первого уровня круглыми, второго – заменить на квадратные, третьего и последующих – на фигурные. убедиться в корректности использования скобок. пример. ln(sin((a+b)c-d)) заменить выражением ln{sin[(a+b)c-d]}.

250
258
Посмотреть ответы 2

Ответы на вопрос:


//pascalabc.net 3.1 сборка 1239 var       brackets: array [0..2, 0..1] of char : = (('{', '}'), ('[', ']'), ('(', ')')); begin       var s : = readlnstring();       var counter : = 0;       var max_depth : = 0;             for var i : = 1 to s.length do       begin               if s[i] = '(' then counter += 1               else if s[i] = ')' then counter -= 1               else continue;               if counter < 0 then begin                       writeln('brackets error');                       halt;               end;               if counter > max_depth then max_depth : = counter;       end;             counter : = 0;       for var i : = 1 to s.length do       begin               if s[i] = '(' then counter += 1               else if s[i] = ')' then counter -= 1               else continue;                             if (counter = max_depth - 1) and (s[i] = '(') then s[i] : = brackets[1, 0]               else if (counter = max_depth - 2) and (s[i] = ')') then s[i] : = brackets[1, 1]               else if (counter = max_depth - 2) and (s[i] = '(') then s[i] : = brackets[0, 0]               else if (counter = max_depth - 3) and (s[i] = ')') then s[i] : = brackets[0, 1];       end;             writeln(s); end.

Столько же сколько и тебе)

Популярно: Информатика