-1

私の問題は、関数「sense」によって収集されたポインター配列「q」を他の関数「move」に渡すと、「q」の値がランダムに変化することです。どんな反応でも心から感謝します。これが私のコードです:

Main()
int main(int argc,char *argv[])
{
    int i,j,k;
    float *p=(float *)malloc(sizeof(float));
    float *q=(float *)malloc(sizeof(float));
    j=0;
    k=0;

    for(i=0;i<NCELLS;i++)
                 p[i]=1.0/NCELLS;

        q=sense(p,j); //Gives write values in q
    j++;

    q=move(q,motion[k]); // when passed to "move" values of q randomly changes
    k++;

    printf("\n");
    for(i=0;i<NCELLS;i++)
                printf("%f\t", q[i]);

    printf("\n");
    return 0;
}
functions:
float* move(float *p,int U)
{
    int i;
    float temp;
    float *next=(float *)malloc(sizeof(float));
    printf("\n");
    for(i=0;i<NCELLS;i++)
            printf("%f\t", p[i]); //Here I am checking for change in values
    for(i=0;i<NCELLS;i++)
    {
        temp=pGoal*p[mod(i-U,NCELLS)];  
        temp=temp+pOvershoot*p[mod(i-U+1,NCELLS)]; 
        temp=temp+pUndershoot*p[mod(i-U-1,NCELLS)]; 
        next[i]=temp;
    }  

    return(next);
}

float* sense(float *p,int j)
{
    int i;
        float *q, sum;
    q=(float *)malloc(sizeof(float));
        sum=0;
        for(i=0;i<NCELLS;i++)
        {
                if(strcmp(World[i],Sense[j])==0)
                        q[i]=pHit*p[i];
                else
                        q[i]=pMiss*p[i];

                        sum+=q[i];     
         }
     for(i=0;i<NCELLS;i++)
                q[i]=q[i]/sum;

    return(q);
}
4

1 に答える 1