какой курс университета эта задача?
очень интересная
для начала нужно определить правила, буквально перечислив ситуации когда так надо делать:
умножение на 9: число умножается на 10 и вычитается это же число
чтобы на 11 умножить двузначное число нужно
сложить его цифры и записать результат в середину...
возвести количество единиц в квадрат если получилось однозначное
число дописать 0 слева
Затем по накатанной - выделяешь в строке лексемы (числа, операции, скобки).
Проходишь (например рекурсией) по лексемам, (для каждой открытой скобки вызов рекурсии) и строишь дерево операций, учитывая возведения в степень, умножения и деления как приоритетные (в принципе можно в два прохода это сделать, первым проходом добавляешь скобки к приоритетным операциям, а вторым проходом строишь дерево, код проще и читаемее будет.
Затем определяешь порядок выполнения той же рекурсией, записывая в массив задом на перед (на самом деле не важно, можно просто по порядку писать но работать с этим массивом с конца) встречные операции (т.е. тебе нужна древовидная структура в памяти с возможностью ссылаться на ее элементы в отдельном массиве).
Теперь у тебя массив операций в правильном порядке, для каждого элемента начинаешь выполнение правилам, результат записываешь в эту ветку структуры (чтобы следующая операция могла брать этот результат)
в принципе на все вышеописанное кроме 'рациональных' вычислений есть готовые библиотеки, но что то мне говорит что цель задания именно в велосипеде