![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
C++で,次の式の計算プログラムを書きたいのですが,今ひとつ(というか全く)分かりせん.
どなたか,教えていただけないでしょうか.できたら,ソースを書いていただけると嬉しいです...
P0
=
(Σ(n=0からc-1まで)a^{n}/n! + a^{c}/((c-1)!(c-a)))^{-1}
です.
cの値を0から100まで変化させたときの,P0の値を求めたいので,for文つかって,あとは結果を加算してったいらいいんでしょうが,階乗が入ってきてしまい,全く分からなくなってしまいました...
ちなみに,aは定数なので,そのままで構わないと思います.
プログラマの方,よろしくお願いしたします.
No.2ベストアンサー
- 回答日時:
大切なことから書きます。
式の中にとてつもなく大きな数値になるものが含まれていますよね。例えば、99!とか、(aがいくつなのかによりますけど) a^100とか。
C/C++の整数型の変数だけではまかないきれません。
浮動小数点を使用したら何とかなりますが、今度は桁落ちなどを考慮する必要があります。果たしてあなたの期待している精度が保てるかどうか...
以上を無視して、単純に論理部分だけ書くと以下のように作る方法があります。
(1)階乗を計算する関数を用意する。
double fact(int x);
*中身はご自身で考えてくださいね。
(2)べき乗を計算する関数を用意する。
double pow(int x, int y);
*中身はご自身で考えてくださいね。
(3)本体
const int a = 10; // 定数aです。
for(int c=1; c<=100; c++) {
double p = 0;
// シグマの計算
for(int n=0; n<c; n++) {
p = pow(a, n)/fact(n) + pow(a, c)/(fact(c-1)*(c-a));
}
// その逆数がcを与えたときのP0
printf("P0(C=%d) = %f\n", 1/p);
}
参考まで。
ありがとうございました.
なんとかできました.
ですね,確かに階乗計算で100!ってのは
ありえないですよね(汗).
なので,とりあえず10!ぐらいまでにして
おきました.
本当にたすかりました.
これからも何かありましたら,アドバイスよ
ろしくお願いいたします.
No.1
- 回答日時:
すぐに回答が欲しいと言うことなので、とりあえず。
コードを全て核余裕がないので、階乗部分のヒントだけで許してください。
適当な変数(nkaiとか)にforループの外側で1を代入。
forループの最初に
nkai=nkai*n;
という行を入れる。
この値がn!になります。
ありがとうございます.
なんとなく分かるのですが,これを実装するとなるとまだよく分かりません...すみません...
コードを書いていただけるなら時間が多少かかっても大丈夫なので,細かく教えていただけないでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 化学 化学のエンタルピ変化を求め方について ある例題では各物質のモール数を換算して計算することもあり、ある 1 2022/06/20 23:22
- C言語・C++・C# 3×3のラテン方陣をつくるプログラムを作成したのですが、(↓) #include <stdio.h> 5 2023/07/10 01:53
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Ruby VBA 2 2023/01/14 14:14
- 経済学 「政府支出乗算」の求め方を教えてください。 2 2022/11/20 19:52
- 経済学 マクロ経済学の「政府支出乗算」の求め方が分かりません。 10 2022/11/20 16:47
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- 数学 数1 三角形ABCにおいて、a=2√3、b=2√2、A=60°の時 c、B、Cを求めよ。という問題で 4 2022/11/23 21:48
- 統計学 ガチャガチャの中に、あるアニメの キャラAのフィギュアが3種類1個ずつ キャラBのフィギュアが3種類 1 2022/06/04 15:28
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
”/”を使わずに割り算したいんで...
-
O(n log n)について2
-
VB.net Double と...
-
三菱シーケンサ(Aシリーズ)で...
-
16進数 加算 減算 C言語
-
c languageで 簡単な質問があ...
-
VBAでの割り算の余りの求め方
-
コンピューターは指数関数をど...
-
ExcelのINT関数の計算結果がお...
-
ExcelでPC(パソコン)によって...
-
引き算で端数が出る理由
-
【C言語】RGBと輝度の計算に関して
-
Fortran において変数の定義
-
Visual Studioのバージョンによ...
-
色の判定
-
エクセル計算 答えは同じなの...
-
floatの有効桁数がわからない
-
巨大な素数の効率的な作り方
-
マイコン(AVR)で、ある式を記...
-
加算と減算で乗算と除算を表現...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
O(n log n)について2
-
16進数 加算 減算 C言語
-
c languageで 簡単な質問があ...
-
ExcelでPC(パソコン)によって...
-
”/”を使わずに割り算したいんで...
-
有効数字について 以前質問をし...
-
三角比の俯角の計算
-
ExcelのINT関数の計算結果がお...
-
VB.net Double と...
-
floatの有効桁数
-
パソコンで階乗を計算
-
三菱シーケンサ(Aシリーズ)で...
-
除算を使わずに10で割りたい。
-
VB6.0での小数点の扱いについて
-
EXCELの関数"STDEV(標準偏差)"...
-
時刻の比較
-
VBAでの割り算の余りの求め方
-
計算の丸め誤差の解消について
-
C言語プログラミングにて、arct...
-
VBAでミリ秒まで出力する方法
おすすめ情報