Ayuda con un problema de ciclos en C++

Publicado por Brunky
hace 3 años

Estoy tratando de hacer una calculadora muy sencilla en C++ que permita realizar operaciones básicas con dos operandos y luego le pregunte al usuario si desea continuar o salir. Tengo este código:

#include<iostream>
#include<string>
using namespace std;

int sumar(int x, int y)
{
  return x + y;
}

int restar(int x, int y)
{
  return x - y;
}

int multiplicar(int x, int y)
{
  return x * y;
}

int dividir(int x, int y)
{
  return x / y;
}

int main()
{
  int x, y;
  string opreacion;
  string repetir = "s";

  while (repetir == "s" or "S")
  {
    cout << "CALCULADORA: Version 1.0" << endl;
    cin >> x >> operacion >> y;

    if (operacion == "+")
    {
      cout << "Resultado: " << sumar(x, y) << endl;
    }
    else if (operacion == "-")
    {
      cout << "Resultado: " << restar(x, y) << endl;
    }
    else if (operacion == "*")
    {
      cout << "Resultado: " << multiplicar(x, y) << endl;
    }
    else if (operacion == "/")
    {
      cout << "Resultado: " << dividir(x, y) << endl;
    }
    else
    {
      cout << "Este no es un signo valido. Por favor elige otro para continuar" << endl;
    }

    cout << "Quieres continuar? s/n" << endl;
    cin >> repetir;

    if (repetir == "n" or "N")
    {
      cout << "Saliendo..." << endl;
      break;
    }
  }
}

El problema es que cuando el programa me pregunta si deseo continuar y le pongo que si, aun así se corta el ciclo y se cierra. No entiendo por que pasa eso si deberia seguir funcionando hasta que le ingrese "n" para salir.

Respuesta de Cristian Olaz
hace 3 años

Hola. Tenés un problema en el if que también pusiste en la condición del ciclo. Cuando hacés esto:

if (repetir == "n" or "N")

Es como si pusieras esto:

if ((repetir == "n") or "N")

Entonces la condición de ese if siempre será verdadera. Por eso el ciclo se corta. Lo que tendrías que hacer ahí es:

if (repetir == "n" || repetir == "N")

Por otra parte, en el while podrías dejar un

while (true)

Ya que el ciclo se cortará solo cuando el usuario decida no seguir. Saludos.

Para poder participar del foro necesitas iniciar sesión con tu cuenta. Si no tienes una puedes registrarte utilizando tu email!

Iniciar sesión Quiero registrarme