parent-child list algorithm code

Upload: nipun-baruah

Post on 24-Feb-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/25/2019 Parent-Child List Algorithm Code

    1/7

    #i ncl ude

    #i ncl ude

    #i ncl ude

    #def i ne PI 3. 14159265

    #def i ne R3 1. 73205080

    typedef struct sensor

    {

    i nt i d, VP[6], G[6], sl ave_count , vp_count ;

    i nt pt [1][2];

    char status;

    i nt S[1000], L[1000];

    f l oat o_pt [1][2];

    }sensor ;

    voi dnei ghbor _di scovery(sensor , i nt , sensor x[]);

    voi dsnap(i nt , i nt , i nt , i nt , sensor x[]);

    i nt s_push(i nt , i nt , i nt , sensor n[]);

    i nt r eq(i nt , i nt , i nt , sensor n[]);

    i nt mov_cond(i nt , i nt , sensor );

    i nt sol ve(i nt );

    i nt t , no_l ev=0, msg_count =0, count =0;

    i nt mai n()

    {

    FI LE *f p, *f f;

    f p=f open("out put . t xt " ,"w" );f f=f open("coor di nates. t xt ","w" );

    i nt n,s_ i ni t =0,x1,y1,x2,y2,pt _depl oy[1][2];

    i nt i ,j ,k,l ,m,p=0,i ncr =0,r ,s;

    pr i nt f(" \ nEnter t he number of sensors : ");

    scanf("%d" , &n);

    sensor node[n];

    pr i nt f(" \ nEnter x1, x2, y1, y2 : ");

    scanf("%d%d%d%d" , &x1, &x2, &y1, &y2);

    pt _depl oy[0][0] = (x1+x2)/2;

    pt _depl oy[0][1] = (y1+y2)/2;

    for(i =0;i

  • 7/25/2019 Parent-Child List Algorithm Code

    2/7

    node[i ].o_pt [0][0] = pt_depl oy[0][1];

    node[i ].o_pt [0][1] = pt_depl oy[0][1];

    node[i ].status = ' f ' ;

    node[i ].sl ave_count = 0;

    node[i ].vp_count = 6;

    l =0;for(k=0;k

  • 7/25/2019 Parent-Child List Algorithm Code

    3/7

    snap(s_ i ni t , j , node[s_ i ni t ].L[k], n, node);

    j ++;

    }

    }

    if (j ==6)

    break;}

    for(l =1;l

  • 7/25/2019 Parent-Child List Algorithm Code

    4/7

    s=0;

    for(i =k;i >0;i --)

    s += (i *6);

    s+=1;

    if (s==n)

    msg_count += (2*pow(k,2)*(k*6));else

    {

    j =0;

    j = (k*6)-(s-n);

    msg_count += (2*pow(k,2)*j );

    }

    }

    for(j =0;j

  • 7/25/2019 Parent-Child List Algorithm Code

    5/7

    if (p!=-1)

    return (r eq(p, t , n, node));

    }

    }

    else

    {j =0;

    while(j

  • 7/25/2019 Parent-Child List Algorithm Code

    6/7

    }

    if((node[i ].pt [0][0] == s.pt [0][0]+1 && node[i ].pt [0][1] == s.pt [0][1]+1)

    &&(node[s.i d].VP[1]!=-1))

    {

    node[s.i d].vp_count --;

    node[s.i d].VP[1]=-1;}

    if((node[i ].pt [0][0] == s.pt [0][0]-1 && node[i ].pt [0][1] == s.pt [0][1]+1)

    &&(node[s.i d].VP[2]!=-1))

    {

    node[s.i d].vp_count --;

    node[s.i d].VP[2]=-1;

    }

    if((node[i ].pt [0][0] == s.pt [0][0]-2 && node[i ].pt [0][1] == s.pt [0][1])

    &&(node[s.i d].VP[3]!=-1))

    {

    node[s.i d].vp_count --;

    node[s.i d].VP[3]=-1;

    }

    if((node[i ].pt [0][0] == s.pt [0][0]-1 && node[i ].pt [0][1] == s.pt [0][1]-1)

    &&(node[s.i d].VP[4]!=-1))

    {

    node[s.i d].vp_count --;

    node[s.i d].VP[4]=-1;

    }

    if((node[i ].pt [0][0] == s.pt [0][0]+1 && node[i ].pt [0][1] == s.pt [0][1]-1)

    &&(node[s.i d].VP[5]!=-1))

    {

    node[s.i d].vp_count --;node[s.i d].VP[5]=-1;

    }

    }

    }

    }

    voi dsnap(i nt s, i nt j , i nt i , i nt n, sensor node[n])

    {

    i nt k;

    if (node[i ].status == ' s' )

    {node[i ].pt [0][0] = r ound(node[s].pt [0][0] + (R3 * cos(j *(PI /3))));

    node[i ].pt [0][1] = r ound(node[s].pt [0][1] + (R3 * si n(j *(PI /3))));

    node[i ].o_pt [0][0] = node[s].o_pt [0][0] + (R3 * cos(j *(PI /3)));

    node[i ].o_pt [0][1] = node[s].o_pt [0][1] + (R3 * si n(j *(PI /3)));

    node[i ].status = ' S';

    for (k=0; k

  • 7/25/2019 Parent-Child List Algorithm Code

    7/7

    {

    node[s].S[k] = -1;

    node[s].sl ave_count --;

    }

    }

    }}

    i nt mov_cond(i nt i d_y, i nt Sy, sensor x)

    {

    if((x.st at us==' S') && (x.sl ave_count >0))

    return 1;

    else

    return 0;

    }

    i nt s_push(i nt s, i nt i d_y, i nt n, sensor node[n])

    {

    i nt i ,k;

    k = node[i d_y].sl ave_count ;

    for(i =0;i