cfunctionexponent

C Power function negative exponent without pow()


I'm trying to make a little power calculator for learning purposes in C without using pow, but it always returns 0.00 when exponent is negative, please help.

full code:

#include<stdio.h>
//*  power caculator function

int power(x,y)
{
   float p=1.00;
   int i;
    if (y<0){
        y=-1*y;
        x=1/x;
    }
    for (i=1;i<=y;i++)
    {
        p=p*x;
    }

return p;
}



//*  main gets input, calls power caculator and prints result'
int main()
{
int b;
int e;
float p;
printf("enter base");
scanf("%d",&b);
printf("enter exponent");
scanf("%d",&e);
p=power(b,e);
printf("%d to the power of %d is %.2f",b,e,p);
return 0;
}
//* I am NOOB

Solution

  • You are using integers to hold decimal values, in this case with x and with the return type of the power function.

    try:

    float power(x,y)
    {
       float p=1.00;
       float xx = (float)x;
       int i;
        if (y<0){
            y=-1*y;
            xx=1/xx;
        }
        for (i=1;i<=y;i++)
        {
            p=p*xx;
        }
    
    return p;
    }