Write a program to find power of a number. should work with negative number as well.
#include<stdio.h> long double Power_Calculate(int,int); enum NumSignStatus{IS_POSITIVE,IS_NEGATIVE}; int main() { int num1,num2; long double ans; printf("Enter First Value = ",ans); scanf("%d",&num1); printf("Enter Second Value = ",ans); scanf("%d",&num2); ans = Power_Calculate(num1,num2); printf("%d^%d = %Lf\n",num1,num2,ans); return 0; } long double Power_Calculate(int x,int y) { long double p = 1,i; int XValue,YValue; XValue = IS_POSITIVE; YValue = IS_POSITIVE; if(x < 0) { x = -x; XValue = IS_NEGATIVE; } if(y < 0) { y = -y; YValue = IS_NEGATIVE; } for(i = 1;i <= y;i++) { p = p * x; } if(XValue == IS_POSITIVE) { if(YValue == IS_POSITIVE) return p; else return (1/p); } else { if(YValue == IS_POSITIVE) { if(y%2) return (-p); else return p; } else { if(y%2) return (-(1/p)); else return (1/p); } } }
Output
Enter First Value = 2 Enter Second Value = 5 2^5 = 32.000000
Enter First Value = 2 Enter Second Value = -5 2^-5 = 0.031250
Enter First Value = -2 Enter Second Value = 5 -2^5 = -32.000000
Enter First Value = -2 Enter Second Value = -5 -2^-5 = -0.031250