Riepilogo - Divisione sicura
Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 53 di 56.
Sfida
FacileCrea un programma che implementi una divisione sicura usando una gestione completa delle eccezioni. Questa sfida metterà alla prova la tua capacità di combinare la progettazione di funzioni con la gestione delle eccezioni per gestire con eleganza gli errori di divisione per zero.
Verranno forniti i seguenti input:
- Un
doublenumeratorche rappresenta il numero da dividere - Un
doubledenominatorche rappresenta il numero per cui dividere
Il tuo programma dovrebbe:
- Creare una funzione denominata
safeDivideche accetta due parametridouble(numerator e denominator) - All'interno della funzione, controllare se il denominatore è uguale a zero
- Se il denominatore è zero,
throwla stringa"Division by zero error" - Se il denominatore non è zero, calcolare il risultato della divisione e restituirlo come
double - Nella funzione principale, chiamare
safeDivideall'interno di un bloccotrycon i valori di input - Usare un blocco
catchper gestire l'eccezione stringa generata - Stampare il messaggio appropriato in base al fatto che la divisione riesca o meno
Usa il seguente formato di output esatto:
Per una divisione riuscita:
Result: [division_result]Per un errore di divisione per zero:
Error: Division by zero errorRicorda che quando il denominatore è zero, la tua funzione dovrebbe generare immediatamente un'eccezione con throw prima di tentare la divisione. Il blocco catch dovrebbe specificare il tipo const char* per gestire la stringa letterale generata. Quando viene generata un'eccezione, il programma passerà direttamente dall'istruzione throw al blocco catch corrispondente, impedendo che si verifichi una divisione per zero e consentendo al programma di gestire l'errore con eleganza invece di bloccarsi.
Provalo tu
#include <iostream>
using namespace std;
int main() {
// Leggi l'input
double numerator, denominator;
cin >> numerator >> denominator;
// TODO: Scrivi qui il tuo codice
// Crea la funzione safeDivide sopra main()
// Usa un blocco try-catch per gestire le eccezioni
return 0;
}Tutte le lezioni di Logica e flusso
1Puntatori e memoria
Che cos'è un puntatore?Operatore indirizzoOperatore di dereferenziazionePuntatori nulliPuntatori e arrayMemoria dinamica con 'new'Liberare la memoria con 'delete'Riepilogo - Esercizi sui puntatori2Vettori (array dinamici)
Introduzione a std::vectorCreare un vettoreAggiungere elementiAccedere agli elementiDimensione del vettoreIterare con un ciclo forCiclo for basato su intervalloRimuovere elementiRiepilogo - Operazioni sui vettori5Progetto: strumento per l’inventario
Configurazione del progettoAggiunta e aggiornamento degli articoli8Gestione di base degli errori
Introduzione alle eccezioniI blocchi 'try' e 'catch'La parola chiave 'throw'Diversi tipi di eccezioniIl gestore catch-allRiepilogo - Divisione sicura3Progetto: Strumento per l’elenco delle attività
Panoramica del progettoAggiungere un’attivitàEsercitati da solo: Compilatore C++ online