POW function
CodeGuru Home VC++ / MFC / C++ .NET / C# Visual Basic VB Forums Developer.com
Results 1 to 2 of 2

Thread: POW function

  1. #1
    Join Date
    Mar 2017
    Posts
    14

    POW function

    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;
    	}
    }
    Last edited by TheJollyRoger; November 13th, 2017 at 10:08 PM.

  2. #2
    2kaud's Avatar
    2kaud is offline Super Moderator Power Poster
    Join Date
    Dec 2012
    Location
    England
    Posts
    5,835

    Re: POW function

    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?)
    Use recursion.

    Why not use std::max() instead of larger()? See http://www.cplusplus.com/reference/algorithm/max/

    You are throwing an exception in SquareRoot() - but you are also catching the exception within the function. Try/catch should be around the call to SquareRoot() - not within the function.
    All advice is offered in good faith only. All my code is tested (unless stated explicitly otherwise) with the latest version of Microsoft Visual Studio (using the supported features of the latest standard) and is offered as examples only - not as production quality. I cannot offer advice regarding any other c/c++ compiler/IDE or incompatibilities with VS. You are ultimately responsible for the effects of your programs and the integrity of the machines they run on. Anything I post, code snippets, advice, etc is licensed as Public Domain https://creativecommons.org/publicdomain/zero/1.0/ and can be used without reference or acknowledgement. Also note that I only provide advice and guidance via the forums - and not via private messages!

    C++17 Compiler: Microsoft VS2017 (15.4.4)

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  


Windows Mobile Development Center


Click Here to Expand Forum to Full Width

This a Codeguru.com survey!


On-Demand Webinars (sponsored)