Prueba de algoritmos | SP Concurso 3 | Pregunta 10

A continuación se muestra una función de C++ para evaluar una expresión de sufijo representada como una string. El siguiente código contiene comentarios apropiados y algunas declaraciones están marcadas especialmente. Encuentre las declaraciones que conducirán a una salida incorrecta.

// C++ function to evaluate a given postfix expression
int evaluatePostfix(char* exp)
{
    // Create a stack of capacity equal to expression size
    stack<int> st;
    int i;
   
    // Scan all characters one by one
    for (i = 0; exp[i]; ++i)
    {
        // If the scanned character is an operand (number here),
        // push it to the stack.
        // The isdigit() function is used to check if a particular 
        // character in the given input string is a digit or not.
        if (isdigit(exp[i]))
            st.push(exp[i]);    // Statement 1
   
        //  If the scanned character is an operator, pop two
        // elements from stack apply the operator
        else
        {
            int val1 = st.top();    // Statement 2
            st.pop();
            int val2 = st.top();
            st.pop();
              
            switch (exp[i])        // Statement 3            
            {
             case '+': st.push(val2 + val1); break;
             case '-': st.push(val2 - val1); break;
             case '*': st.push(val2 * val1); break;
             case '/': st.push(val2/val1);   break;
            }
        }
    }
      
    return st.top();
}

(A) Declaración 2
(B) Declaración 1
(C) Declaración 3 y Declaración 1
(D) Ninguna de las anteriores

Respuesta: (B)
Explicación: https://www.geeksforgeeks.org/stack-set-4-evalue- postfix-expression/
Cuestionario de esta pregunta

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *