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.
  • HackerRank Home

    HackerRank

  • |
  • Prepare
  • Certify
  • Compete
  • Apply
  • Hiring developers?
  1. Prepare
  2. C++
  3. Debugging
  4. Cpp exception handling
  5. Discussions

Cpp exception handling

Problem
Submissions
Leaderboard
Discussions
Editorial

Sort 64 Discussions, By:

recency

Please Login in order to post a comment

  • doug88
    3 weeks ago+ 0 comments

    Why is this considered "Medium" difficulty?

    0|
    Permalink
  • mohammadtasinspj
    3 weeks ago+ 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|
    Permalink
  • jonahbtaylor05
    3 months ago+ 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;
    }
    
    -1|
    Permalink
  • musyyd
    3 months ago+ 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|
    Permalink
  • musyyd
    3 months ago+ 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;
    }
    
    1|
    Permalink
Load more conversations

Need Help?


View editorial
View top submissions
  • Blog
  • Scoring
  • Environment
  • FAQ
  • About Us
  • Support
  • Careers
  • Terms Of Service
  • Privacy Policy