| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 347 人关注过本帖
标题:一个关于二位数组作为函数参数的问题 求解
只看楼主 加入收藏
wyc184001758
Rank: 2
等 级:论坛游民
帖 子:6
专家分:10
注 册:2014-9-14
收藏
 问题点数:0 回复次数:2 
一个关于二位数组作为函数参数的问题 求解
程序如下  
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<math.h>

#define N 99
int main(void)
{
    int i,j,n,a[N],sum1=0,sum2=0,b[N][N],x,y;
    float p[N],X[N][N],HX,HXY;
    float ComputingHx(float b[],int n);
    float ComputingHxy(float *p,int n);

    srand( (unsigned)time(0) );//产生随机P(X)
    n = rand()%10;

    while(n==0||n==1)          //防止产生0个或者1个概率
    {
        srand( (unsigned)time(0) );
        n = rand()%10;
    }                          //防止产生0个或者1个概率

    for(i=0;i<n;i++)
    {
        a[i] = rand()%100;
        sum1+=a[i];
    }

    printf("P(X)\t");
    for(i=0;i<n;i++)
    {
        p[i] = ((float)a[i])/((float)sum1);
    }
    for(i=0;i<n;i++)
    {
        printf("%.3f\t",p[i]);
    }
    printf(" \n ");//产生随机P(X)


    srand( (unsigned)time(0) );//产生随机P(XY)
    x = rand()%10;
    y = rand()%10;

    while((x==0||x==1)||(y==0||y==1))          //防止产生0个或者1个概率
    {
        srand( (unsigned)time(0) );
        x = rand()%10;
        y = rand()%10;
    }                          //防止产生0个或者1个概率

    for(i=0;i<x;i++)
    {
        for(j=0;j<y;j++)
        {
            b[i][j] = rand()%100;
            sum2+=b[i][j];
        }
    }
    printf("\n\nP(XY)\t");
    for(i=0;i<x;i++)
    {
        for(j=0;j<y;j++)
        {
            X[i][j] = ((float)b[i][j])/((float)sum2);
        }
    }
    for(i=0;i<x;i++)
    {
        for(j=0;j<y;j++)
        {
            printf("%.3f\t",X[i][j]);
        }
        printf("\n\t");
    }
    printf(" \n ");//产生随机P(XY)

    HX = ComputingHx(p,n);
    printf("H(X) = %f\n",HX);

    HXY = ComputingHxy(X,x*y);
    printf("H(XY) = %f\n",HXY);
}
float ComputingHx(float b[],int n)
{
    int i;
    float Hx;
    for(i=0;i<n;i++)
        Hx = b[i]*log(1/b[i]);
    return Hx;
}
float ComputingHxy(float *p,int n)
{
    float *end;
    float Hxy = 0;
    end = p+n;
    for(;p<end;p++)
    {
        Hxy +=(*p)*log(1/(*p));
    }
    return Hxy;
}

不懂那个参数是怎么传的  求大神求教 !!
搜索更多相关主题的帖子: include 
2014-10-23 17:47
wyc184001758
Rank: 2
等 级:论坛游民
帖 子:6
专家分:10
注 册:2014-9-14
收藏
得分:0 
为啥有些次能出答案  有时候不能出答案啊
2014-10-23 17:50
wyc184001758
Rank: 2
等 级:论坛游民
帖 子:6
专家分:10
注 册:2014-9-14
收藏
得分:0 
找到问题了  貌似是有些数据求对数后造成数据溢出  但是怎么要怎么解决呀
2014-10-23 18:07
快速回复:一个关于二位数组作为函数参数的问题 求解
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028108 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved