Witam. Borykam się z pewnym problemem, a mianowicie chciałbym, aby funkcja ta obliczała potęgi dla wykładników ujemnych, ale nie rozumiem
dlaczego w takiej sytuacji, w której użyłem fabs() ona nie działa, a w tym krótkim przykładzie już tak?
Przykład:
#include <stdio.h>
#include <math.h>
int main ()
{
int b;
b = -10;
printf("Absoulte value of 3.1416 is %lf\n", fabs (3.1416));
printf("Absoulte value of %d is %lf\n", b, fabs (b));
return 0;
}
Mój kod:
#include <stdio.h>
#include <math.h>
double potega(double a, int b);
int main(void)
{
double x, xpot;
int n;
printf("Podaj liczbe oraz potege naturalna,");
printf(" do ktorej podniesiona\nzostanie liczba. Wpisz q,");
printf(" aby zakonczyc program.\n");
while (scanf("%lf%d", &x, &n) == 2)
{
xpot = potega(x, n);
printf("%.3g do potegi %d to %.5g\n", x, n, xpot);
printf("Podaj kolejna pare liczb lub wpisz q, aby zakonczyc.\n");
}
printf("Do widzenia!\n");
return 0;
}
double potega(double a, int b)
{
double pot = 1;
int i;
if (b > 0)
for (i = 1; i <= b; i++)
pot *= a;
if (b = 0)
pot = 1;
if (b < 0)
for (i = 1; i <= fabs (b); i++) /* ??? */
pot *= 1/a;
return pot;
}