hi there, i need some help here, i've the script in .cpp below and i want to compile using ns2 (my OS is windows XP and i use cygwin), please help me...
===================start code============================================== #include "freeway.h" #include "map.h" #include "node.h" //global variable int global_clock=0; class Map mymap; class Node *mynode; //sort all nodes on the maps into several queues void sort_initial(class Map *my_map, class Node *my_node) { int i,j; int src_lane_id,src_phase_id; int pre=-1,suc=-1; float min_pre=10000.0,min_suc=10000.0; // min distance to pre/suc printf("N=%d\n",NUM_OF_NODE); for(i=0;i<NUM_OF_NODE;i++) { src_lane_id = my_node[i].src_lane; src_phase_id = my_node[i].src_phase; pre=-1;suc=-1; min_pre=10000.0;min_suc=10000.0; //if the lane is empty, insert the 1st one if(my_map->lane_array[src_lane_id].vehicle_head == NULL) my_map->link_initiate (src_lane_id,i); //else else { for(j=0;j<i;j++) { if( my_node[i].src_lane == my_node[j].src_lane && my_node[i].src_phase >= my_node[j].src_phase && //getmy_distance(my_node[i].src_x,my_node[i].src_y,my_node[j].src_x,my_node[j].src_x) < min_suc && //getmy_sign(my_map->lane_array[src_lane_id].phase_array[src_phase_id].x0,my_map->lane_array[src_lane_id].phase_array[src_phase_id].x1,my_map->lane_array[src_lane_id].phase_array[src_phase_id].y0,my_map->lane_array[src_lane_id].phase_array[src_phase_id].y1) // == getmy_sign(my_node[j].src_x,my_node[i].src_x,my_node[j].src_y,my_node[i].src_y) getmy_phase_dist1(my_node[i].src_phase,my_node[i].src_offset,my_node[j].src_phase,my_node[j].src_offset) < min_suc ) { suc = j; min_suc = getmy_phase_dist1(my_node[i].src_phase,my_node[i].src_offset,my_node[j].src_phase,my_node[j].src_offset); //printf("i=%d,suc=%d,min_suc=%f\n",i,suc,min_suc); } if( my_node[i].src_lane == my_node[j].src_lane && my_node[i].src_phase <= my_node[j].src_phase && //getmy_distance(my_node[i].src_x,my_node[i].src_y,my_node[j].src_x,my_node[j].src_x) < min_pre && //getmy_sign(my_map->lane_array[src_lane_id].phase_array[src_phase_id].x0,my_map->lane_array[src_lane_id].phase_array[src_phase_id].x1,my_map->lane_array[src_lane_id].phase_array[src_phase_id].y0,my_map->lane_array[src_lane_id].phase_array[src_phase_id].y1) // == getmy_sign(my_node[i].src_x,my_node[j].src_x,my_node[i].src_y,my_node[j].src_y) ) getmy_phase_dist2(my_node[i].src_phase,my_node[i].src_offset,my_node[j].src_phase,my_node[j].src_offset) < min_pre ) { pre = j; min_pre = getmy_phase_dist2(my_node[i].src_phase,my_node[i].src_offset,my_node[j].src_phase,my_node[j].src_offset); //printf("i=%d,pre=%d,min_pre=%f\n",i,pre,min_pre); } }//for j //printf("ID=%d's pre=%d, suc=%d\n",i,pre,suc); my_map->link_insert(src_lane_id,pre,suc,i); }//if-else //printf("node=%d on lane=%d: ",i,src_lane_id); //my_map->show_linklist(src_lane_id); }//for i //printf("INITIATION: queue is like that\n"); //for(i=0;i<my_map->get_lane_num();i++) // my_map->show_linklist(i); } float speed_check(int i, int clock, class Map *my_map, class Node *my_node) { int predecessor,successor; float distance1,distance2,return_value; predecessor = my_map->predecessor(i); successor = my_map->successor(i); if(predecessor!=-1) distance1=getmy_distance(my_node[i].x_array[clock],my_node[i].y_array[clock],my_node[predecessor].x_array[clock],my_node[predecessor].y_array[clock]); if(successor!=-1) distance2=getmy_distance(my_node[i].x_array[clock],my_node[i].y_array[clock],my_node[successor].x_array[clock],my_node[successor].y_array[clock]); //printf("i=%d's predecessor is %d, successor=%d\n",i,predecessor,successor); //printf("dist1=%f,dist2=%f\n",distance1,distance2); if(predecessor == -1 && successor!= -1 && distance2 >= 40.0) return_value = -1.0; else if( predecessor != -1 && distance1 <= 40.0 ) return_value = my_node[predecessor].speed_array[clock] - ACCELERATION*0.5; else if( predecessor != -1 && successor!= -1 && distance1 >100.0 && distance2< 40.0 ) return_value = my_node[i].speed_array[clock]+ACCELERATION; else if(predecessor == -1 && successor!= -1 && distance2<40.0) return_value = my_node[i].speed_array[clock]+ACCELERATION; else return_value = -1; //printf("value=%f\n",return_value); return return_value; } //main function void main() { int m,n; int i,j,k; float req_speed; FILE *fp; int input_d; float input_f; char map_name[20],trace_name[20]; printf("*********************************************************\n"); printf("*Welcome to the Freeway Mobility Generator by [EMAIL PROTECTED]"); printf("*********************************************************\n\n"); printf("input Number of Node:\n"); scanf("%d",&input_d); NUM_OF_NODE = input_d; printf("input the Acceleration Speed:\n"); scanf("%f",&input_f); ACCELERATION = input_f; printf("input the Filename of the map:\n"); scanf("%s", map_name); printf("input the Filename of the Trace Output File:\n"); scanf("%s", trace_name); mynode = new class Node[NUM_OF_NODE]; mymap.map_read(map_name); fp = fopen(trace_name,"w"); if(fp == NULL) { printf("Error opening output file!\n"); exit(-1); } for(i=0;i<100;i++) rand(); mymap.map_read(map_name); fp = fopen(trace_name,"w"); if(fp == NULL) { printf("Error opening output file!\n"); exit(1); } for(i=0;i<NUM_OF_NODE;i++) { for(n=0;n<100;n++) rand(); mynode[i].initialize(i,&mymap); //mynode[i].show_trace (0); } sort_initial(&mymap,mynode); for(i=0;i<NUM_OF_NODE;i++) mynode[i].save_file(fp,0,0); for(i=1;i<SIMULATION_DURATION;i++) for(j=0;j<NUM_OF_NODE;j++) { rand(); global_clock=i; req_speed = speed_check(j,global_clock-1,&mymap,mynode); mynode[j].update(&mymap,global_clock,req_speed); //mynode[j].show_trace(global_clock); } for(k=0; k<SIMULATION_DURATION;k++) for(i=0;i<NUM_OF_NODE;i++) for(j=i+1;j<NUM_OF_NODE;j++) if( getmy_distance(mynode[i].x_array[k],mynode[i].y_array[k], mynode[j].x_array[k],mynode[j].y_array[k]) < 0.01 ) { //printf("TOO close: t=%d, i=%d <%f,%f>, j=%d <%f,%f>\n", // k,i,mynode[i].x_array[k],mynode[i].y_array[k], // j,mynode[j].x_array[k],mynode[j].y_array[k]); if( mynode[i].y_array[k] >= mynode[j].y_array[k] ) mynode[i].y_array[k] += 0.2; else if ( mynode[i].y_array[k] < mynode[j].y_array[k] ) mynode[j].y_array[k] += 0.2; } for(k=0; k<SIMULATION_DURATION;k++) for(i=0;i<NUM_OF_NODE;i++) for(j=i+1;j<NUM_OF_NODE;j++) if( getmy_distance(mynode[i].x_array[k],mynode[i].y_array[k], mynode[j].x_array[k],mynode[j].y_array[k]) < 0.01 ) { //printf("STILL TOO close: t=%d, i=%d <%f,%f>, j=%d <%f,%f>\n", // k,i,mynode[i].x_array[k],mynode[i].y_array[k], // j,mynode[j].x_array[k],mynode[j].y_array[k]); } for(j=SIMULATION_DURATION-1;j>=0;j--) for(i=0;i<NUM_OF_NODE;i++) mynode[i].save_file(fp,1,j); fclose(fp); delete [] mynode; } =====================================end code============================== thank you for your help...