返回信息流求救:
#include<stdio.h>
#include<math.h>
#include<graphics.h>
#define L 2
#define N 2
double p_i[N]={0.5,0.5};
void main()
{
int cnt;
double flag_e;
double SS[5],SaveResult[5];
double func_q_j(int j,int n,double S);
int func_d_ij(int i,int j);
double func_P_ij(int i,int j,int n,double S);
double func_R(int m,int n,double S);
double func_I(int m,int n,double S);
double func_Last_RS(double flag_e,double S);
printf("enter the judge_parament you want to input:\n");
scanf("%lf",&flag_e);
printf("enter 5 S you want to input:\n");
for(cnt=0;cnt<5;cnt++)
scanf("%lf",&SS[cnt]);
for(cnt=0;cnt<5;cnt++)
SaveResult[cnt]=func_Last_RS(flag_e,SS[cnt]);
for(cnt=0;cnt<5;cnt++)
printf("%lf-----",SaveResult[cnt]);
}
double func_q_j(int j,int n,double S)
{
double result=0;
int i;
for(i=0;i<N;i++)
result+=p_i[i]*func_P_ij(i,j,n,S);
return(result);
}
int func_d_ij(int i,int j)
{
int d_ij;
if(i==j)
{
d_ij=0;
}
else
{
d_ij=1;
}
return(d_ij);
}
double func_P_ij(int i,int j,int n,double S)
{
double fenzi,fenmu,result=0;
int d_ij,count;
fenmu=0;
if(n==1)
{
return(1.0/L);
}
fenzi=func_q_j(j,n-1,S)*exp(S*func_d_ij(i,j));
for(count=0;count<L;count++)
fenmu+=func_q_j(count,n-1,S)*exp(S*func_d_ij(count,i));
result=fenzi/fenmu;
return(result);
}
double func_R(int m,int n,double S)
{
return func_I(m,n,S);
}
double func_I(int m,int n,double S)
{
double temp,result=0;
int i,j;
for(i=0;i<N;i++)
for(j=0;j<L;j++)
{
temp=func_P_ij(i,j,n,S);
result+=p_i[i]*temp*log(temp/func_q_j(j,n,S));
}
return(result);
}
double func_Last_RS(double flag_e,double S)
{
int i=1;
double flag;
do
{
i++;
flag=func_R(i,i,S)-func_R(i-1,i,S);
}while(flag>flag_e);
return(func_R(i,i,S));
}
我在运行时出现 exp:overflow error
但是我分析了很久exp函数中的值不可能溢出啊,因为我输入的SS【5】都是小于0的。
怎么理解?
谢谢
这是一条镜像帖。来源:北邮人论坛 / cpp / #33725同步于 2009/12/18
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
求助 程序错误
lulecsu
2009/12/18镜像同步2 回复
订阅后,新回复会通过你的通知中心匿名送达。