/* Program 8.4.2 from C++ Programming Lecture notes  */

/* Author: Rob Miller and William Knottenbelt
   Program last changed: 28th September 2013    */

/* This program raises a number x to a non-negative integer power n. */ 

#include <iostream>
#include <cstdlib>
using namespace std;

/* Function which raises the first argument to the power of the second argument */
float raised_to_power(float number, int power);

/* MAIN PROGRAM: */
int main() 
{	
	float my_number; 
	int my_power;

	/* prompt the user */
	cout << "This program raises a number x to a non-negative integer power n.\n\n";
	cout << "Please enter a number: ";
	cin >> my_number;
	cout << "To what power would you like it raised? ";
	cin >> my_power;
	cout << "\n";
 
 	/* echo the input */
 	cout << my_number << " raised to the power " << my_power;
 	cout << " is " << raised_to_power(my_number, my_power);
	
	return 0;
}
/* END OF MAIN PROGRAM */

/* FUNCTION DEFINITION OF raised_to_power: */
float raised_to_power(float number, int power)
{
	if (power < 0)
	{
		cout << "\nError - can't raise to a negative power\n";
		exit(1);
	}
	else if (power == 0)
		return (1.0);
	else
		return (number * raised_to_power(number, power - 1));
}
/* END OF FUNCTION */
