如何在for循环中添加结果?
How to add results in a for loop?
我创建了一个可以计算概率的程序:
() = ((!)/(x!)((N-x)!))*(^x)*(1-p)^(−)
当您输入 N
、x
和 p
的值时,程序运行良好。
但是,我还需要计算给定 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;
}
我创建了一个可以计算概率的程序:
() = ((!)/(x!)((N-x)!))*(^x)*(1-p)^(−)
当您输入 N
、x
和 p
的值时,程序运行良好。
但是,我还需要计算给定 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;
}