es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo comparo un ‘int’ o ‘double’ con un ‘char’ utilizando el código ASCII en C++? ¿Es posible?

Estoy escribiendo una calculadora matemática simple que toma dos entradas (una para el número y otra para la operación, como +, -, *, /) con una función “Deshacer”.

Inicialicé lo siguiente:

// ‘valor’ es el resultado final y ‘usuario’ es la entrada del usuario

double valor = 0;
double usuario;
char operacion;

// Historial de valores anteriores

list<double> historial;

El código principal se ve así:

// Mostrar el valor inicial (0)
cout << "=>" << valor << endl;

while(true)
{
    cin >> usuario;
    cin >> operacion;

    // Suma
    if(operacion == '+')
    {
        historial.push_front(valor);
        valor += usuario;
        cout << "=>" << valor << endl;
    }

    // Resta
    if(operacion == '-') 
    { 
        historial.push_front(valor);
        valor -= usuario;
        cout << "=>" << valor << endl;       
    }

    // Multiplicación
    if(operacion == '*') 
    { 
        historial.push_front(valor);
        valor *= usuario;
        cout << "=>" << valor << endl;    
    }

    // División
    if(operacion == '/') 
    { 
        historial.push_front(valor);
        valor /= usuario;
        cout << "=>" << valor << endl;   
    }

    if(operacion == 'u' || operacion == 'U')
    {
        valor = historial.front();
        cout << "=>" << valor << endl;
    }
}

El problema aquí es que estoy pidiendo dos entradas y estoy pidiendo primero el número (que es de tipo double) en lugar de la operación (tipo char). Así que si el usuario ingresa ‘u’ como primera entrada, comenzará a comportarse de forma extraña.

¿Hay alguna forma de comparar el valor con una letra (en este caso, ‘u’ y ‘U’) utilizando códigos ASCII? ¿Y cómo lo haría si es posible?

Intenté declarar otro char deshacer = 'u' y luego compararlo con if(usuario == deshacer), pero no funciona.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible comparar value con una letra (en este caso ‘u’ y ‘U’) utilizando los códigos ASCII. En ASCII, ‘u’ tiene un valor de 117 y ‘U’ tiene un valor de 85.

    Para comparar user con ‘u’ o ‘U’ utilizando los códigos ASCII, puedes convertir user a un entero utilizando la palabra clave static_cast y compararlo con los valores enteros de ‘u’ y ‘U’. Aquí está el código modificado:

    int userInt = static_cast<int>(user);
    if(userInt == 117 || userInt == 85) // utilizando los códigos ASCII para 'u' y 'U'
    {
        value = history.front();
        cout << "=>" << value << endl;
    }
    

    Esto debería funcionar para comparar user con ‘u’ o ‘U’ utilizando los códigos ASCII.

Comments are closed.