コード例 #1
0
ファイル: fonct.c プロジェクト: BastienMor/test
void possibility (FILE*dico, cell entre[N][N][3], cell sortie[20][100])
{
	int i;
	int j;
	int k;
	int exist;
	init_sortie (sortie);
	nb_elem = 0;

	for(i = 0; i < N; i++)
	{
		for(j = 0; j < N; j++)
		{
			exist = 1;
			k = 0;
			init_visited(entre);
			sortie[nb_elem][k] = entre[i][j];
			nb_elem++;
			k++;
			entre[i][j].visited = 1;
			while (exist != 0)
			{
				check_dico (&nb_elem, &exist, k, sortie, dico);
				take_nei (sortie);
			}
		}
	}
}
コード例 #2
0
/*
  process_func_call will differentiate between user-defined function
  and built-in function calls.
 */
void process_func_call()
{
    int i, j;
    int func_call = 0;
    call_trace_tree *p;

    // Search for all calls made in function definition and extract only user-definition calls
    for (i = 0; i < temp_index; i++)
	{
	    for (j = 0; j < global_func_index; j++)
		{
		    if(strcmp(temp_call_trace[i].func_name,func_tab[j].func_name) == 0)
			{
			    call_trace[call_trace_index] = temp_call_trace[i];
			    call_trace[call_trace_index].index = call_trace_index;
			    call_trace[call_trace_index].func_index = j;
			    call_trace_index++;
			    break;
			}
		}
	}

    generate_tree_head();// generate indivisual tree head for each funtion.
    func_call = generate_trace_tree();// generate function call trace tree
    printf("\n\n FUNCTION CALL TRACE\n");
    if (func_call)
	{
	    for (i = 0; i < global_func_index; i++)
		{
		    p = stack_trace[i];
		    while(p != NULL)
			{
			    printf(" %d->",p->index);
			    p = p->next;
			}
		    printf("\n");
		}

	    // traverse tree using DFS
	    for (i = 0; i < global_func_index; i++)
		{
		    for (j = 0; j < thread_index; j++)
			{
			    if (i == thread_tab[j].func_index)
				{
				    parent_thread_index = i;
				    DFS(stack_trace, i, visited);
				    init_visited();
				}
			}

		}

	}

}
コード例 #3
0
ファイル: bfs&dfs.c プロジェクト: hamirshekhawat/algorithms
int main(){
	
	insert_node(1);
	insert_node(2);
	insert_node(3);
	insert_node(4);
	insert_node(5);
	insert_node(6);
	insert_node(7);
	insert_node(8);
	insert_node(9);
	
	insert_edge(1,2,1);	
	insert_edge(1,4,1);
	insert_edge(1,5,1);
	insert_edge(2,3,1);
	insert_edge(2,5,1);
	insert_edge(3,6,1);
	insert_edge(4,7,1);
	insert_edge(5,6,1);
	insert_edge(7,5,1);
	insert_edge(7,8,1);
	insert_edge(8,9,1);
	
	
	
	init_visited();
	display();
	printf("\n\n\n");
	bfs(start);
	init_visited();
	printf("\n\n\n");
	dfs(start);
	return 0;
	
}
コード例 #4
0
ファイル: Floodfill.cpp プロジェクト: ut666/VolViewer
void Floodfill::init(int w, int h, int d, int visitedmode)
{
	width = w;
	height = h;
	depth = d;
	
	maxrecursiondepth = 4;

	if(visitedmode==VISITEDARRAY)
	{
		visited_voxels = new bool**[w];
		for(int i=0; i<w; i++)
		{
			visited_voxels[i] = new bool*[h];
			for(int j=0; j<h; j++)
			{
				visited_voxels[i][j] = new bool[d];
			}
		}
		
		init_visited();
	}

	float size = 1.0;
	float resX = volobj->texwidth;
	float resY = volobj->texheight;
	float resZ = volobj->texdepth;
	float maxres = 0.0;
	
	maxres = max((float)maxres, (float)resX);
	maxres = max((float)maxres, (float)resY);
	maxres = max((float)maxres, (float)resZ);
	
	float maxressize =  max((float)volobj->xsize, (float)volobj->ysize);
	maxressize =  max((float)maxressize, (float)volobj->zsize);
	
	float maxsize =  max((float)volobj->xsize, (float)volobj->ysize);
	maxsize =  max((float)maxsize, (float)volobj->zsize);
	
	scaleX = (volobj->xsize/maxsize);//(maxsize/resX);
	scaleY = (volobj->ysize/maxsize);//(maxsize/resY);
	scaleZ = (volobj->zsize/maxsize);//(maxsize/resZ);
}