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.
#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;
}
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Cpp exception handling
You are viewing a single comment's thread. Return to all comments →