#include <iostream>
#include <cmath> // Para funciones matemáticas
#include <limits> // Para limpiar el buffer de entrada
Using namespace std;
Void mostrarMenu() {
Cout << “\n=== CALCULADORA CIENTÍFICA ===\n”;
Cout << “1. Suma\n”;
Cout << “2. Resta\n”;
Cout << “3. Multiplicación\n”;
Cout << “4. División\n”;
Cout << “5. Potencia\n”;
Cout << “6. Raíz cuadrada\n”;
Cout << “7. Seno (en radianes)\n”;
Cout << “8. Coseno (en radianes)\n”;
Cout << “9. Tangente (en radianes)\n”;
Cout << “10. Logaritmo natural (ln)\n”;
Cout << “11. Logaritmo base 10\n”;
Cout << “0. Salir\n”;
Cout << “Seleccione una opción: “;
Int main() {
Int opcion;
Double num1, num2;
Do {
mostrarMenu();
cin >> opcion;
// Validación de entrada
If ([Link]()) {
[Link](); // limpia errores
[Link](numeric_limits<streamsize>::max(), ‘\n’); // descarta
entrada
Cout << “Entrada inválida. Intente de nuevo.\n”;
Continue;
Switch (opcion) {
Case 1:
Cout << “Ingrese dos números: “;
Cin >> num1 >> num2;
Cout << “Resultado: “ << num1 + num2 << endl;
Break;
Case 2:
Cout << “Ingrese dos números: “;
Cin >> num1 >> num2;
Cout << “Resultado: “ << num1 – num2 << endl;
Break;
Case 3:
Cout << “Ingrese dos números: “;
Cin >> num1 >> num2;
Cout << “Resultado: “ << num1 * num2 << endl;
Break;
Case 4:
Cout << “Ingrese dos números: “;
Cin >> num1 >> num2;
If (num2 == 0) cout << “Error: División por cero.\n”;
Else cout << “Resultado: “ << num1 / num2 << endl;
Break;
Case 5:
Cout << “Base y exponente: “;
Cin >> num1 >> num2;
Cout << “Resultado: “ << pow(num1, num2) << endl;
Break;
Case 6:
Cout << “Ingrese un número: “;
Cin >> num1;
If (num1 < 0) cout << “Error: No se puede calcular raíz de
número negativo.\n”;
Else cout << “Resultado: “ << sqrt(num1) << endl;
Break;
Case 7:
Cout << “Ingrese ángulo en radianes: “;
Cin >> num1;
Cout << “Resultado: “ << sin(num1) << endl;
Break;
Case 8:
Cout << “Ingrese ángulo en radianes: “;
Cin >> num1;
Cout << “Resultado: “ << cos(num1) << endl;
Break;
Case 9:
Cout << “Ingrese ángulo en radianes: “;
Cin >> num1;
Cout << “Resultado: “ << tan(num1) << endl;
Break;
Case 10:
Cout << “Ingrese un número: “;
Cin >> num1;
If (num1 <= 0) cout << “Error: ln no definido para <= 0.\n”;
Else cout << “Resultado: “ << log(num1) << endl;
Break;
Case 11:
Cout << “Ingrese un número: “;
Cin >> num1;
If (num1 <= 0) cout << “Error: log10 no definido para <= 0.\
n”;
Else cout << “Resultado: “ << log10(num1) << endl;
Break;
Case 0:
Cout << “Saliendo…\n”;
Break;
Default:
Cout << “Opción inválida.\n”;
Break;
}
} while (opcion ¡= 0);
Return 0;