Инфикс для префикса работает, но не для степенных (каретных) выражений функций?

У меня есть функция, которая принимает инфиксные выражения и преобразует их в префиксные выражения. Вот мой код:

string infixToPrefix(string expression)
{

stack<char> S; //holds operators
stack<char>output; //display like in class
string prefix = "";
char ch;
S.push('#');

for (int i = expression.length(); i > 0; i--){

ch = expression[i];

if (isOperand(ch) == true){
output.push(ch);

}
else {
if (ch == '('){
while (S.top() !=  ')'){
output.push(S.top());
S.pop();
}
}

else {
while (isp(S.top()) > icp(ch)){

output.push(S.top());
S.pop();

}
S.push(ch);

}
}
}

while (S.top() != '#'){
output.push(S.top());
S.pop();

}

while (!output.empty()){
if (output.top() == ')'){
output.pop();
}
else{
prefix.append(1,output.top());
output.pop();
}
}
return prefix;
}

Эта функция хорошо работает с примерами выражений, которые мой профессор хочет, чтобы я использовал; «3-4-5» приводит к «-345» и «5 * (4/2)» приводит к «* 5/42». Однако это не работает с выражением «3 ^ 4 ^ 5». Он продолжает давать мне «^^ 345», где он должен быть «^ 3 ^ 45».

Мой алгоритм неверен? Или это может иметь какое-то отношение к ICP и ISP (в коде, который она дала мне, оба имеют «^» = 3)?

-3

Решение

Решаемые. Мой профессор закодировал, что isp из ^ = 3 и icp из ^ = 3, тогда как когда я изменил isp на 4, он начал работать. Я возьму это с моим профессором.

-2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]