Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

144
Vistas
¿Cómo puedo hacer que esto funcione? ¿Hay alguna forma de optimizarlo?

Quería hacer una calculadora con c ++, y no quería que mi calculadora hiciera solo cálculos de 2 números, así que "hice" una calculadora de 2 operadores. Además, quiero saber si hay una manera de hacer esto sin dos declaraciones de cambio para que sea más fácil de leer para las máquinas y los programadores.

 #include <iostream> int top1 ; int main() { char operatr1, operatr2; float num1, num2, num3, num4 ; std::cout << "Please choose the first operator ( +, -, *, /):"; std::cin >> operatr1 ; std::cout << "Please choose the second operator ( +, -, *, /):"; std::cin >> operatr2; std::cout << "Please enter three numbers: " << std::endl; std::cin >> num1 >> num2 >> num3; switch (operatr1) { case '+': int top1{ num1 + num2 }; break; case '-': int top1{ num1 - num2 }; break; case '*': int top1{ num1 * num2 }; break; case '/': int top1{ num1 / num2 }; break; default: std::cout << "Error! The operator is not correct" << std::endl << "The operators are ( +, -, *, / )."; break; } switch (operatr2) { case '+': int top2{ top1 + num3 }; std::cout << "The answer is:" << " " << top2; break; case '-': int top2{ top1 - num3 }; std::cout << "The answer is:" << " " << top2; break; case '*': int top2{ top1 * num3 }; std::cout << "The answer is:" << " " << top2; break; case '/': int top2{ top1 / num3 }; std::cout << "The answer is:" << " " << top2; break; default: std::cout << "Error! The operator is not correct" << std::endl << "The operators are ( +, -, *, / )."; break; } }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Defina top1 fuera de la sentencia switch. El top1 global que define no tiene el valor que espera, porque define un nuevo top1 dentro de cada declaración de case . Su compilador debería advertirle sobre esto (en realidad, creo que debería ser un error en este caso).

Además, dado que num1 a num4 son flotantes, su top1 y top2 también deberían ser float s, no int s

Efectivamente, elimine int top1 de sus variables globales, luego en su principal:

 float top1 = 0; switch ( operatr1 ) { case '+': top1 = num1 + num2; break; // ... continue with other cases here }

Luego, para su segunda declaración de switch , top1 estará visible y tendrá el valor correcto.

over 4 years ago · Santiago Trujillo Denunciar

0

Podrías hacer uso de una función:

 int Evaluate(const char operator, const int num1, const int num2) { bool is_valid_operator = true; int result = 0; switch (operator) { case '+': result = num1 + num2; break; case '-': result = num1 - num2; break; case '/': // Note: integer division. result = num1 / num2; break; case '*': result = num1 * num2; break; default: result = 0; is_valid_operator = false; break; } if (is_valid_operator) { std::cout << "Result of " << num1 << " " << operator << " " << num2 << "\n"; std::cout << result << "\n"; } return result; }

Su principal se simplificaría a:

 //... int top1 = Evaluate(operatr1, num1, num2); int top2 = Evaluate(operatr2, top1, num3);
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda