We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
- Prepare
- C++
- Debugging
- Cpp exception handling
- Discussions
Cpp exception handling
Cpp exception handling
+ 0 comments Why is this considered "Medium" difficulty?
+ 0 comments #include <iostream> #include <stdexcept> using namespace std; int largest_proper_divisor(int n) { if (n == 0) { throw invalid_argument("largest proper divisor is not defined for n=0"); } if (n == 1) { throw invalid_argument("largest proper divisor is not defined for n=1"); } for (int i = n/2; i >= 1; --i) { if (n % i == 0) { return i; } } return -1; // will never happen } void process_input(int n) { try { if(n==0 || n==1) throw invalid_argument("largest proper divisor is not defined for n="); else{ int d = largest_proper_divisor(n); cout << "result=" << d << endl; } } catch(const std::invalid_argument& e) { cout<<e.what()<<n<<endl; } cout << "returning control flow to caller"; } int main() { int n; cin >> n; process_input(n); return 0; }
+ 0 comments Easy money.
#include <iostream> #include <stdexcept> using namespace std; int largest_proper_divisor(int n) { if (n == 0) { throw invalid_argument("largest proper divisor is not defined for n=0"); } if (n == 1) { throw invalid_argument("largest proper divisor is not defined for n=1"); } for (int i = n/2; i >= 1; --i) { if (n % i == 0) { return i; } } return -1; // will never happen } void process_input(int& n) { try { int d = largest_proper_divisor(n); cout << "result=" << d << endl; } catch (const std::invalid_argument& e) { cout << e.what() << endl; } cout << "returning control flow to caller" << endl; } int main() { int n; cin >> n; process_input(n); return 0; }
+ 0 comments invalid _argument is a class derived from logic error then exception class... so you can write that instead:
catch (const exception& e){ cout<<e.what()<<endl; }
+ 0 comments void process_input(int n) { int d; try{ d = largest_proper_divisor(n); cout << "result=" << d << endl; } catch (const invalid_argument& ie){ cout<<ie.what()<<endl; } cout << "returning control flow to caller" << endl; }
Load more conversations
Sort 64 Discussions, By:
Please Login in order to post a comment