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++ almacena el valor de cin.getline en una variable de tipo double y en una variable de tipo char.

En mi programa, quiero limitar la cantidad de números que un usuario puede ingresar usando cin.getline(variable, N). Mi código se ve así (este no es todo el código):

#include

int main()
{
input:
long double num1;
long double num2;
long double result;
char response;
cout << “Ingrese el primer número y luego presione enter” << endl;
cin >> num1;
cout << “Ingrese + para sumar, – para restar, * para multiplicar, / para dividir, v para encontrar la raíz cuadrada y ^ para encontrar la potencia” << endl;
cin.getline(response, 2); //¡Aquí está el problema!
}

Cuando ejecuto esto, obtengo el siguiente error:

Error message screenshot

¿Cómo puedo almacenar el valor devuelto por cin en una variable double y una variable char?

Por favor, avíseme si necesita información adicional.

ACTUALIZACIÓN: Encontré una solución diferente para mi proyecto. La solución es específica para mi código y no funcionará en otras circunstancias, por lo que no tiene sentido subirla. Gracias por su tiempo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema con el código es que cin.getline(response, 2) intenta leer una cadena de tamaño 2 del input. Sin embargo, se supone que el usuario sólo debe ingresar un único carácter. Para solucionar esto, puedes cambiar la línea a cin >> response para leer un único carácter del flujo de entrada.

    Además, es posible que desees considerar añadir validación de entrada para asegurarte de que el usuario sólo ingresa un carácter de respuesta válido (es decir, uno de los caracteres especificados en el mensaje). Puedes hacer esto mediante un bucle que continúe hasta que la entrada sea válida.

    Aquí tienes una versión actualizada del código con validación de entrada:

    “`cpp
    #include
    #include

    int main()
    {
    long double num1;
    long double num2;
    long double result;
    char response;

    std::cout << "Ingresa el primer número y luego presiona enter" << std::endl;
    std::cin >> num1;
    
    // Bucle de validación de entrada
    while (true)
    {
        std::cout << "Ingresa + para sumar, - para restar, * para multiplicar, / para dividir, v para encontrar la raíz cuadrada y ^ para encontrar la potencia" << std::endl;
        std::cin >> response;
    
        // Ignorar cualquier carácter adicional en el flujo de entrada
        std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
    
        // Comprobar si la entrada es válida
        if (response == '+' || response == '-' || response == '*' || response == '/' || response == 'v' || response == '^')
        {
            break;
        }
        else
        {
            std::cout << "Respuesta inválida. Por favor ingresa un carácter válido." << std::endl;
        }
    }
    
    // Ahora puedes usar num1 y response en tus cálculos
    ...
    
    return 0;
    

    }
    “`

Comments are closed.