以下のような問題が出されました。
実数値dxの逆数(1/dx)を返す関数invertを作成せよ。
これをサンプルプログラムに追加してnに負の数が入力された場合は
1/(x^|n|)(|n|はnの絶対値)を計算できるよう修正せよ。
サンプルプログラムは
#include <stdio.h>
/*---dxのno乗を返す---*/
double power(double dx,int no)
{
int i;
double tmp = 1.0;
for ( i=1; i<= no; i ++ )
tmp *= dx;
return (tmp);
}
int main(void)
{
int n;
double x;
printf("実数を入力してください:"); scanf("%lf",&x);
printf("整数を入力してください:"); scanf("%d",&n);
printf("%.2fの%d乗は%.2fです。\n",x,n,power(x,n));
return(0);
}
という感じです。以下のように作ったのですが…
1/(x^|n|)のところがよくわかりません。絶対値のfabsは使わない指定です。
そもそも考え方もあっているのかよくわからないのでご意見お願いします。
#include <stdio.h>
/*---1/(dx^|no|)を返す---*/
double power(double dx,int no)
{
int i;
double tmp = 1.0;
no=-no;
for ( i=1; i<= no; i ++ )
tmp *= 1/dx;
return (tmp);
}
double invert(double dx)
{
double tmp;
tmp = 1/dx;
return (tmp);
}
int main(void)
{
int n;
double x;
printf("実数xを入力してください:"); scanf("%lf",&x);
printf("整数nを入力してください:"); scanf("%d",&n);
if(n<0){
printf("1/(x^|n|)は%.2fです。\n",x,power(x,n));
}
else
printf("%.2fの逆数は%.2fです。\n",x,invert(x));
return(0);
}
