pow関数を使い入力した数字の階乗を表示を作りたいんです。
画面出力するときにlong型として出力したいのですが、うまくできません。
{
double x, y;
scanf(%lf, &x);
n = pow(x, 2);
printf(%f, (long)n);
}
ではだめなのでしょうか?
おねがいします。(いくらか省いてます)
double型をlongで表示する
意図はなんでしょう?
しかも
>n = pow(x, 2);
じゃ,階乗になってませんよ
n = pow(x, 2);
はxの2乗になってないんですか?
資料によるとa = pow(x,y);
となっていましたが。
>n = pow(x, 2);
>はxの2乗になってないんですか?
こらはたしかに,xの自乗ですが,
>pow関数を使い入力した数字の階乗を表示を作りたいんです。
階乗を表示したいのではなかったのですか?
たしかに、ではpow(x, x);
にすればOKですか。
それと(%f, (long)n);
なんですがlong型にしたので%fかなと思ったんですが、
%lfですか?
>pow関数を使い入力した数字の階乗を表示を作りたいんです。
>たしかに、ではpow(x, x);
>にすればOKですか。
数字の階乗の定義と,
関数pow(x, y)がどのような処理をするのか
考えれるor調べれば,
OKかどうかは,わかると思いますが.
試してみるのが一番だと思います.
#ちなみに答えをいってしますと,OKではありません
>それと(%f, (long)n);
>なんですがlong型にしたので%fかなと思ったんですが、
>%lfですか?
>double x, y;
>scanf(%lf, &x);
>n = pow(x, 2);
>printf(%f, (long)n);
nは何型でしょうか?
(long)nとしてるとこをみると,doubleでしょうか?
・longとはどのような型か
・pow(x, y)の返り血は何型か
・printf()の %による書式
について調べてみてはどうでしょうか?
ちなみに,%lfはdouble型で,%fはfloat型です.
あっ、はやとちりしてました。
long型は%dですよね。
pow関数はべき乗なんですが、これで階乗を計算することは可能なんですか?
>pow関数はべき乗なんですが、これで階乗を計算することは可能なんですか?
可能かどうかときかれらば,可能です.
しかし,階乗とはどういうものか考えれば
もっと素直な解き方があると思いますが...
ゆうたさんのかんがえる”階乗”とは
どのようなものでしょうか?
その”階乗”をもとめるのに,
”べき乗(pow(s, y))”を使うのが
適当かどうかは,わかると思いますが...
一度階乗をどうのようなものと考えているか
かお書きになっては?
long hoge(long n)
{
long l;
if (n == 1)
return 1;
l = n * hoge(n - 1);
return l;
}
が素直ではないかと・・・
答え書いたら勉強にならんって^^;
で、もっと縮めれば:
unsigned long factorial(unsigned long n) {
return n ? n * factorial(n-1) : 1;
}
かな。
>答え書いたら勉強にならんって^^;
ごめんなさい。今後気をつけます。
>答え書いたら勉強にならんって^^;
その人しだいかな?
それで単にコピペして終わるようならそれまでの人だし。
なんでそうなるのかを考えるか、自主性による。
小出しにしてもらわないと勉強にならないようでは、勉強してるのではなくて、
勉強させられてるのかも???
>>答え書いたら勉強にならんって^^;
> その人しだいかな?
> それで単にコピペして終わるようならそれまでの人だし。
単にコピペして終わるようなそれまでの人に答え教えちゃうのはヤです。
そうでない人なら答えそのものを呈示する必要はないわけだし。
ならどっちみち書かないほうがよかろうと。
>そうでない人なら答えそのものを呈示する必要はないわけだし。
そうでない人は、その答えを得ることによって、自分がその答えを出せるようになるまで、
「自分で」反芻学習が可能になるという利点がある。
であれば、時間が有効利用できるので必要がないわけではない。
>単にコピペして終わるようなそれまでの人に答え教えちゃうのはヤです。
いろいろな意味で嫌な場合もあるが、どれほど「やる気」があるのか見たい時もある。(^_^;
まあ、何事も相手に合わせてというとこなんだろうけど、、、
今回はちょっと合わなかったかもしれない。