Cpp exception handling

Sort by

recency

|

67 Discussions

|

  • + 0 comments

    This is so basic. Why is it medium?

  • + 0 comments
    void process_input(int n) {
          try {
            int d = largest_proper_divisor(n);
            cout << "result=" << d << endl;
        }
        catch (const invalid_argument& e) {
            cout << e.what() << endl;
        }
        cout << "returning control flow to caller" << endl;
    }
    
  • + 0 comments
    void process_input(int n) {
        try{
            int d = largest_proper_divisor(n);
            cout << "result=" << d << endl;
        }catch( invalid_argument& e){
            cout << e.what() << endl;
        }
        cout << "returning control flow to caller";
    }
    
  • + 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;
    }