如何在for循环中添加结果?

How to add results in a for loop?

我创建了一个可以计算概率的程序:

() = ((!)/(x!)((N-x)!))*(^x)*(1-p)^(−)

当您输入 Nxp 的值时,程序运行良好。

但是,我还需要计算给定 x 范围内的概率之和。于是我在程序中加入了x的低端和x的高端。我现在在方程式上遇到了麻烦,因为我无法找到概率之和。我正在尝试创建一个 for 循环,但我不断收到以下消息:"Code will never be executed".

这是我的代码:

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;


double factorial (double N, double x, double p);
double tgamma (double N, double x, double p);

int main ()
{
    double N;
    double xlow;
    double xhigh;
    double p;
    double Probability;
    double result;

    {
        cout << "Input N value" << endl;
        cin >> N;
        {
            cout << "Input low end of x Value" << endl;
            cin >> xlow;
            while(xlow<0 || xlow>N){
                cout << "x value is NOT between 0 and N." << endl;
                cout << "Input x Value" << endl;
                cin >> xlow;
            }
            {
                cout << "Input high endx Value" << endl;
                cin >> xhigh;
                while(xhigh<0 || xhigh>N){
                    cout << "x value is NOT between 0 and N." << endl;
                    cout << "Input x Value" << endl;
                    cin >> xhigh;
                }
            }
            cout << "Input p value" << endl;
            cin >> p;
            while(p<0 || p>1){
                cout << "p value is NOT a real number between 0 and 1." << endl;
                cout << "Input p value" << endl;
                cin >> p;
            }
            double Probability;
            Probability=result;
        }
        return 0;

    }

    double factorial (double N, double xlow, double xhigh, double p, double       Probability);

    for (xlow=0; xlow <= xhigh; ++xlow){

        result =((tgamma((N+1)))/((tgamma(xlow+1)) * ((tgamma(((N-xlow+1))))))) * (pow(p,xlow)) * (pow((1-p),(N-xlow)));
        Probability += result;
    }

}

有人知道这里有什么问题吗?

这是我根据您的建议更新的代码!

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;


double factorial (double N, double x, double p);
double tgamma (double N, double x, double p);

int main ()
{
double N;
double xlow;
double xhigh;
double p;
double Probability;
double result;

{
cout << "Input N value" << endl;
cin >> N;

cout << "Input low end of x Value" << endl;
cin >> xlow;
while(xlow<0 || xlow>N){
    cout << "x value is NOT between 0 and N." << endl;
    cout << "Input x Value" << endl;
    cin >> xlow;
}

cout << "Input high endx Value" << endl;
cin >> xhigh;
while(xhigh<0 || xhigh>N){
        cout << "x value is NOT between 0 and N." << endl;
        cout << "Input x Value" << endl;
        cin >> xhigh;
}

cout << "Input p value" << endl;
cin >> p;
while(p<0 || p>1){
    cout << "p value is NOT a real number between 0 and 1." << endl;
    cout << "Input p value" << endl;
    cin >> p;
}
    double Probability;
    Probability=result;
}




double factorial (double N, double xlow, double xhigh, double p);

for (xlow=0; xlow <= xhigh; ++xlow){

result =((tgamma((N+1)))/((tgamma(xlow+1)) * ((tgamma(((N-xlow+1))))))) * (pow(p,xlow)) * (pow((1-p),(N-xlow)));
Probability += result;
}

}

这一行

    return 0;

将阻止 main 功能的其余部分 运行。删除它。

我做了几处修改。使用 "while" 条件使这段代码正常工作。以下代码计算概率之和:

#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;


double factorial (double N, double x, double p);
double tgamma (double N, double x, double p);

int main ()
{
double N;
double xlow;
double xhigh;
double p;
double Probability;
double result;


cout << "Input N value" << endl;
cin >> N;

cout << "Input low end of x Value" << endl;
cin >> xlow;
while(xlow<0 || xlow>N){
    cout << "x value is NOT between 0 and N." << endl;
    cout << "Input x Value" << endl;
    cin >> xlow;
}

cout << "Input high endx Value" << endl;
cin >> xhigh;
while(xhigh<0 || xhigh>N){
        cout << "x value is NOT between 0 and N." << endl;
        cout << "Input x Value" << endl;
        cin >> xhigh;
}

cout << "Input p value" << endl;
cin >> p;
while(p<0 || p>1){
    cout << "p value is NOT a real number between 0 and 1." << endl;
    cout << "Input p value" << endl;
    cin >> p;
}


while (xlow <= xhigh){

result =((tgamma((N+1)))/((tgamma(xlow+1)) * ((tgamma(((N-xlow+1))))))) * (pow(p,xlow)) * (pow((1-p),(N-xlow)));
    Probability += result;
    ++xlow;
}
cout << "Sum of Probabilities is: " << Probability << endl;
return 0;
}