In this HackerRank Exceptional server problem in the c++ programming language, you are required to handle error messages while working with a small computational server that performs complex calculations. It has a function that takes 2 large numbers as its input and returns a numeric result.

HackerRank Exceptional server solution in c++ programming


HackerRank Exceptional server problem solution in c++ programming.

#include <iostream>
#include <exception>
#include <string>
#include <stdexcept>
#include <vector>
#include <cmath>
using namespace std;

class Server {
private:
    static int load;
public:
    static int compute(long long A, long long B) {
        load += 1;
        if(A < 0) {
            throw std::invalid_argument("A is negative");
        }
        vector<int> v(A, 0);
        int real = -1, cmplx = sqrt(-1);
        if(B == 0) throw 0;
        real = (A/B)*real;
        int ans = v.at(B);
        return real + A - B*ans;
    }
    static int getLoad() {
        return load;
    }
};
int Server::load = 0;

int main() {
    int T; cin >> T;
    while(T--) {
        long long A, B;
        cin >> A >> B;

        /* Enter your code here. */
        try
{
    cout<<Server::compute(A,B)<<endl;
}
catch(bad_alloc& error)
{
    cout<<"Not enough memory"<<endl;
}
catch(exception& error)
{
    cout<<"Exception: "<<error.what()<<endl;
}
catch(...)
{
    cout<<"Other Exception"<<endl;
}

    }
    cout << Server::getLoad() << endl;
    return 0;
}

Second solution

#include <iostream>
#include <exception>
#include <string>
#include <stdexcept>
#include <vector>
#include <cmath>
using namespace std;

class Server {
private:
    static int load;
public:
    static int compute(long long A, long long B) {
        load += 1;
        if(A < 0) {
            throw std::invalid_argument("A is negative");
        }
        vector<int> v(A, 0);
        int real = -1, cmplx = sqrt(-1);
        if(B == 0) throw 0;
        real = (A/B)*real;
        int ans = v.at(B);
        return real + A - B*ans;
    }
    static int getLoad() {
        return load;
    }
};
int Server::load = 0;

int main() {
    int T; cin >> T;
    while(T--) {
        long long A, B;
        cin >> A >> B;
try{
    cout << Server::compute(A,B) << endl;
} catch(std::bad_alloc & e) {
    cout << "Not enough memory" << endl;    
} catch(exception & e) {
    cout << "Exception: " << e.what() << endl;
} catch(int e) {
    cout << "Other Exception" << endl;
}
    }
    cout << Server::getLoad() << endl;
    return 0;
}