So this is a homework problem I am having. I have gotten everything to work(I think it is correct), except the portion which is in bold.

Write a function that takes an integer and returns its integer square root. The function should throw an exception if it is passed an integer that is not a perfect square.

For example,

16 is a perfect square since its square root is a whole number, 4.

15 is not since its square root, 3.873… is not a whole number.

Test the function with a perfect square (like 16) and a non-perfect square (like 15). The program must handle the exception properly – it must continue and not crash when you use a non-perfect square.

Write a function that raises a number to a power without using any built in pow function, and without using loops. (Hint: which topic have we learned recently gave you the behavior of a loop, but isn’t a loop?)

For example,

cout << LooplessPow(2, 4) << endl;//prints out 16

Write a function template that will take two objects of any data type and returns which one is greater. Test the function with ints, doubles, and strings in your program.

Code:/**************************** *****************************/ #include <iostream> #include <math.h> #include <string> #include <cmath> int SquareRoot(int); int Power(int, int, int); template <class T> T larger(T input1, T input2) { if (input1 > input2) { return input1; } else { return input2; } } using namespace std; int main() { int input; int input2; cout << "Input number for square root(1)" << endl; cin >> input; cout << "Input number for square root(2)" << endl; cin >> input2; int result = SquareRoot(input); cout << "Square root of " << input << " is " << result << endl; result = SquareRoot(input2); cout << "Square root of " << input2 << " is " << result << endl; cout << "raise a number to a power" << endl; input = 2; input2 = 4; result = Power(input, input2, input); cout << input << "^" << input2 << " is " << result << endl; cout << "Outputs of INT, STRING, and DOUBLE that are hardcoded in the code, and you are seeing the larger of the two." << endl; cout << larger(4, 5) << " is larger" << endl; cout << larger("Large", "Small") << " is larger" << endl; cout << larger(22.923, 42.183) << " is larger" << endl; return 0; } int SquareRoot(int a) { int perf; double reminder; try { double result = sqrt(a); perf = result; reminder = result - perf; if (reminder > 0) { throw perf; } else { return perf; } cout << "as"; } catch (int n) { return n; } } int Power(int base, int power, int temp) { if (power > 1) { int result = base * power * temp; power--; return result; } }