/** * 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; }
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; }
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; }
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; }
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; }