Beispiel #1
0
/**
 * Menu function that handles the event when someone clicks "Animate sorting"
 * or "Exit." In the case of the former, we will set up the subwindows.
 *
 * @param value - the menu item clicked.
 */
void mymenu(int value) {
    if (value == 1) {
        mergesort_counter = 0; quicksort_counter = 0;
        xs_mergesort = generate_random_list();
        xs_quicksort = malloc(xs_size * sizeof(int));
        cp_array(xs_mergesort, xs_quicksort, xs_size);
        
        // push onto the mergesort stack
        mergesort_stack = make_stack();
        int *initial_array = malloc(xs_size * sizeof(int));
        cp_array(xs_mergesort, initial_array, xs_size);
        Node *initial_node = make_node(initial_array, xs_size, unsorted);
        initial_node->start_index = 0;
        initial_node->end_index = xs_size - 1;
        push(mergesort_stack, initial_node);

        // push onto the quicksort stack
        quicksort_stack = make_stack();
        Sublist *initial_list = make_sublist(0, xs_size - 1);        
        push(quicksort_stack, initial_list);

        recreate_subwindows();
        
        glutIdleFunc(update_lists);
        
        in_intro = false;
    }
    if (value == 2)
        exit(0);
}
int status (struct field **space_array, struct field **array_b)
{
	int i, j, k, l;
	int N, LIFE;


	cp_array (space_array,array_b);

	for (i = 2; i < (vert_size - 1); i++){
		for (j = 2; j < (hor_size - 1); j++)
		{
			N = 0;
			for (k = i - 1; k <= (i + 1); k++)
			{
				for (l = j - 1; l <= (j + 1); l++)
				{
					if (k==l) array_b[k][l].life_exist=0;
					//printf("%i %i  %i %i \n",i,j,k,l);
					N = N + array_b[k][l].life_exist;

				}
			}

			LIFE = frand() * array_b[i][j].oxygen *
				(50 + array_b[i][j].temperature ) / 25;
			if ( (LIFE < 30) || (N < 3) || ( ( (9-N) * LIFE) < 250) )
				space_array[i][j].life_exist = 0;
			else 
				space_array[i][j].life_exist = 0;

		}
	};
	return 0;
}
Beispiel #3
0
int body_of_program (int argc, char **argv)
{

	
	
	//Забиваем всю границу - жизни нет

	//Копируем основной массив в дополнительный
	if (cp_array (space_array,array_b) < 0) {
		exit(-2);
		printf("Дело плохо \n");
	}	
	//Задаём климат на границе
	edge_condition_o(array_b);
	edge_condition_t(array_b);
	/*Устанавливаем текущее состояние температуры*/
	temperature_change(space_array, array_b);
	/*Устанавливаем текущее состояние кислорода*/
	oxygen_change(space_array, array_b);

	//Вызываем функцию, подсчитывающую очередное состояние "жизни"
	status(space_array);
	
	


	return 0;
}
Beispiel #4
0
int body_of_program (struct field **space_array, 
			struct field **array_b, 
			long int info)
{

	
	
	if (cp_array (space_array,array_b) < 0) {
		exit(-2);
		printf("F*ck! \n");
	}	
	
	
	if (((info % 1000)/100) == 0)
	{
		edge_condition_o(array_b,info);
		edge_condition_t(array_b,info);
	}
	else 
	{
	ec_smpl_t(array_b,((info % 1000)/100));
	ec_smpl_o(array_b,((info % 1000)/100));
	};
	temperature_change(space_array, array_b);
	oxygen_change(space_array, array_b);
	status(space_array, array_b,info);
	//status_2(space_array, array_b);

	
	


	return 0;
}
Beispiel #5
0
int body_of_program (struct field **space_array, struct field **array_b, long int info)
{

	
	
	//Забиваем всю границу - жизни нет
	//Копируем основной массив в дополнительный
	if (cp_array_2 (array_b,array_b1) < 0) {
		exit(-2);
		printf("Дело плохо \n");
	}	
	if (cp_array (space_array,array_b) < 0) {
		exit(-2);
		printf("Дело плохо \n");

	}
	
	
	//Задаём климат на границе
	
	
	if (((info % 1000)/100) == 0)
	{
		edge_condition_o(array_b,info);
		edge_condition_t(array_b,info);
	}
	else 
	{
	ec_smpl_t(array_b,((info % 1000)/100));
	ec_smpl_o(array_b,((info % 1000)/100));
	};
	/*Устанавливаем текущее состояние температуры*/
	temperature_change(space_array, array_b);
	/*Устанавливаем текущее состояние кислорода*/
	oxygen_change(space_array, array_b);

	//Вызываем функцию, подсчитывающую очередное состояние "жизни"
	status(space_array, array_b,info);
	//status_2(space_array, array_b);

	
	


	return 0;
}
Beispiel #6
0
int body_of_program (struct field **space_array, 
			struct field **array_b, 
			struct config_info *info)
{

	
	
	if (cp_array (space_array,array_b) < 0) {
		exit(-2);
		printf("F*ck! \n");
	}	
	
	
	if (info->edge_conditions == 0)
		edge_condition(array_b);
	else edge_cond_sample(array_b,info->edge_conditions);

	
	climate_change(space_array, array_b);
	status(space_array, array_b,info);
	
	return 0;
}