Repaso: División segura
Parte de la sección Lógica y Flujo del Journey de C++ de Coddy — lección 53 de 56.
Desafío
FácilCrea un programa que implemente una división segura utilizando un manejo integral de excepciones. Este desafío pondrá a prueba tu capacidad para combinar el diseño de funciones con la gestión de excepciones para manejar errores de división por cero de manera adecuada.
Se proporcionarán las siguientes entradas:
- Un double
numeratorque representa el número a dividir - Un double
denominatorque representa el número por el cual se divide
Tu programa debe:
- Crear una función llamada
safeDivideque reciba dos parámetros de tipo double (numerator y denominator) - Dentro de la función, verificar si el denominador es igual a cero
- Si el denominador es cero, lanzar (
throw) el string"Division by zero error" - Si el denominador no es cero, calcular el resultado de la división y devolverlo como un double
- En la función principal, llamar a
safeDividedentro de un bloquetrycon los valores de entrada - Usar un bloque
catchpara manejar la excepción de string lanzada - Imprimir el mensaje apropiado basándose en si la división tiene éxito o falla
Utiliza el siguiente formato de salida exacto:
Para una división exitosa:
Result: [division_result]Para un error de división por cero:
Error: Division by zero errorRecuerda que cuando el denominador es cero, tu función debe lanzar (throw) inmediatamente una excepción antes de intentar la división. El bloque catch debe especificar el tipo const char* para manejar el literal de cadena lanzado. Cuando se lanza una excepción, el programa saltará directamente desde la sentencia throw al bloque catch correspondiente, evitando que ocurra cualquier división por cero y permitiendo que tu programa maneje el error con elegancia en lugar de cerrarse inesperadamente.
Pruébalo tú mismo
#include <iostream>
using namespace std;
int main() {
// Leer entrada
double numerator, denominator;
cin >> numerator >> denominator;
// TODO: Escribe tu código aquí
// Crea la función safeDivide arriba de main()
// Usa un bloque try-catch para manejar excepciones
return 0;
}Todas las lecciones de Lógica y Flujo
1Punteros y memoria
¿Qué es un puntero?Operador de direcciónOperador de desreferenciaPunteros nulosPunteros y arraysMemoria dinámica con 'new'Liberar memoria con 'delete'Resumen: Práctica de punteros2Vectores (Arrays dinámicos)
Introducción a std::vectorCreación de un VectorAgregar elementosAcceder a los elementosTamaño del VectorIterar con un bucle ForBucle For basado en rangosEliminar elementosResumen - Operaciones con Vectores5Proyecto: Herramienta de inventario
Configuración del proyectoAgregar y actualizar artículos8Manejo básico de errores
Introducción a las excepcionesLos bloques 'try' y 'catch'La palabra clave 'throw'Diferentes tipos de excepcionesEl manejador genérico (catch-all)Repaso: División segura3Proyecto: Herramienta de lista de tareas
Descripción general del proyectoAñadir una tarea