⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gw_qs_observer.c

📁 A Library of Efficient Data Types and Algorithms,封装了常用的ADT及其相关算法的软件包
💻 C
📖 第 1 页 / 共 2 页
字号:
#include "gw_qs_observer.h"// public functionsvoid gw_qs_observer::on_start(alg_qsort&) {    int gw_xmin;  int gw_xmax;  int gw_ymin;  int gw_ymax;  (gw.get_window()).frame_box(gw_xmin, gw_ymin, gw_xmax, gw_ymax);    TL_ptr_source->set_scrollbar(true);  TL_ptr_source->set_bg_color(blue);  TL_ptr_source->extract_frame_label(LanguagePath + "win_and_panel_labels/W_source.frame_label");  TL_ptr_source->load_text_with_display(LanguagePath + "qsort.txt", gw_xmax + 20, gw_ymin);     TL_ptr_run->set_scrollbar(true);  TL_ptr_run->extract_frame_label(LanguagePath + "win_and_panel_labels/W_run.frame_label");  TL_ptr_run->set_button_space(30);  TL_ptr_run->create_menu(LanguagePath + "win_and_panel_labels/W_run.button_labels");  TL_ptr_run->set_display_position(gw_xmin, gw_ymin - TL_ptr_run->get_window_height() - 47);  goto_label = TL_ptr_run->get_button_label(1);  // dirty menu effects   //  goto_label = goto_label.del(goto_label.length() - 3);    TL_ptr_run->set_button_label(1, goto_label + string("%d", GotoLine = 1));  delay_label = TL_ptr_run->get_button_label(2);  // dirty menu effects   //  delay_label = delay_label.del(delay_label.length() - 3);    TL_ptr_run->set_button_label(2, delay_label + string("%d ", AnimationDelay));  VariableName.clear();  VariableName.append("l");         VariableName.append("r");         VariableName.append("\\blue2 i");         VariableName.append("\\green2 j");        VariableName.append("\\red v");           VariableName.append("A[i]");      VariableName.append("A[j]");      VariableName.append("swaps");       VariableName.append("compares");   VariableValue.clear();  for(int i = 0; i < VariableName.size(); i++)    VariableValue.append("");      VV_ptr_state->extract_frame_label(LanguagePath +  "win_and_panel_labels/W_state.frame_label");  VV_ptr_state->set_tupel_distance(0.5);  VV_ptr_state->set_tupel_per_line(5);  VV_ptr_state->set_fontsize(11);  VV_ptr_state->create_table(VariableName, VariableValue);    VV_ptr_state->display(gw_xmin, gw_ymax + 20);}void gw_qs_observer::on_1(alg_qsort&, int left, int right) {  if(Abort) return;     // attention: index over- or underflow possible  //  if(isZoom && left < ArraySize && right > 0)     zoom_to_interval(A_node[left], A_node[right]);    show_active_line(2);  actual_v = -1;  actual_j = -1;  actual_i = -1;  actual_l = left;  actual_r = right;  update_status_window();    TL_ptr_run->load_text_with_display(LanguagePath + "start.txt");  TL_ptr_run->disable_all_buttons();    if(GotoLine == 1)   {    TL_ptr_run->enable_all_buttons();    TL_ptr_run->set_button_label(1, goto_label + string("%d", GotoLine = 2));    wait_of();  }   else      TL_ptr_run->wait_with_timeout(AnimationDelay * 70);}void gw_qs_observer::on_2(alg_qsort&, int left, int right) {     if(Abort) return;  show_active_line(4);  Compares++;  update_status_window();  // attention: index over- or underflow possible  //  if(left >= right)   {    if(right < 0)       gw.set_color(A_node[left], grey2);    else       gw.set_color(A_node[right], grey2);    if(GotoLine != -1 && !SemiAuto)       GotoLine = firstQuicksortCall ? 13 : 1;   }  TL_ptr_run->load_text_with_display(LanguagePath + "comp_l_r.txt");  TL_ptr_run->disable_all_buttons();  if (GotoLine == 2)   {    TL_ptr_run->enable_all_buttons();    TL_ptr_run->set_button_label(1, goto_label + string("%d", GotoLine = 3));    wait_of();  }   else      TL_ptr_run->wait_with_timeout(AnimationDelay * 70);}void gw_qs_observer::on_3(alg_qsort&, int i) {  if(Abort) return;  show_active_line(5);  actual_i = i;  update_status_window();  TL_ptr_run->load_text_with_display(LanguagePath + "new_i.txt");  TL_ptr_run->disable_all_buttons();  if(GotoLine == 3)   {    TL_ptr_run->enable_all_buttons();    TL_ptr_run->set_button_label(1, goto_label + string("%d", GotoLine = 4));    wait_of();  }   else      TL_ptr_run->wait_with_timeout(AnimationDelay * 70);}void gw_qs_observer::on_4(alg_qsort&, int j) {  if(Abort) return;  show_active_line(6);  actual_j = j;  update_status_window();  TL_ptr_run->load_text_with_display(LanguagePath + "new_j.txt");  TL_ptr_run->disable_all_buttons();  if(GotoLine == 4)    {    TL_ptr_run->enable_all_buttons();    TL_ptr_run->set_button_label(1, goto_label + string("%d", GotoLine = 5));    wait_of();  }   else      TL_ptr_run->wait_with_timeout(AnimationDelay * 70);}void gw_qs_observer::on_5(alg_qsort&, int v) {  if(Abort)     return;  show_active_line(7);  gw.set_color(A_node[v], red);   actual_v = v;  update_status_window();  TL_ptr_run->load_text_with_display(LanguagePath + "pivot.txt");  TL_ptr_run->disable_all_buttons();  if (GotoLine == 5)   {    TL_ptr_run->enable_all_buttons();    TL_ptr_run->set_button_label(1, goto_label + string("%d", GotoLine = 6));    wait_of();  }   else     TL_ptr_run->wait_with_timeout(AnimationDelay * 70);}void gw_qs_observer::on_6(alg_qsort&) {  if(Abort) return;  show_active_line(8);  TL_ptr_run->load_text_with_display(LanguagePath + "for.txt");  TL_ptr_run->disable_all_buttons();  if (GotoLine==6)   {    TL_ptr_run->enable_all_buttons();    TL_ptr_run->set_button_label(1, goto_label + string("%d", GotoLine = 7));    wait_of();  }   else      TL_ptr_run->wait_with_timeout(AnimationDelay * 70);}void gw_qs_observer::on_7(alg_qsort&, int i, int v) {  if(Abort) return;  show_active_line(10);  gw.set_color(A_node[i], blue2);  gw.set_color(A_node[v], red);    Compares = Compares + 2;  actual_i = i;  update_status_window();   TL_ptr_run->load_text_with_display(LanguagePath + "while1.txt");  TL_ptr_run->disable_all_buttons();  if(GotoLine == 7)   {    TL_ptr_run->enable_all_buttons();    GotoLine = A_int[i] >= A_int[v] || i >= actual_r ? 8 : 7;     TL_ptr_run->set_button_label(1, goto_label + string("%d", GotoLine));        wait_of();  }   else      TL_ptr_run->wait_with_timeout(AnimationDelay * 70); }void gw_qs_observer::on_8(alg_qsort& , int j, int v) {      if(Abort) return;  show_active_line(11);    gw.set_color(A_node[j], green2);  gw.set_color(A_node[v], red);   Compares++;  actual_j = j;  update_status_window();      TL_ptr_run->load_text_with_display(LanguagePath + "while2.txt");  TL_ptr_run->disable_all_buttons();  if(GotoLine == 8)   {    TL_ptr_run->enable_all_buttons();    GotoLine = A_int[j] <= A_int[v] ? 9 : 8;    TL_ptr_run->set_button_label(1, goto_label + string("%d", GotoLine));    wait_of();  }   else      TL_ptr_run->wait_with_timeout(AnimationDelay * 70);}void gw_qs_observer::on_9(alg_qsort&, int i, int j) {  if(Abort) return;    show_active_line(12);  Compares++;  actual_j = j;  actual_i = i;  update_status_window();    TL_ptr_run->load_text_with_display(LanguagePath + "if_i_j.txt");  TL_ptr_run->disable_all_buttons();    if(GotoLine == 9)   {    TL_ptr_run->enable_all_buttons();    GotoLine = i >= j ? 11 : 10;    TL_ptr_run->set_button_label(1, goto_label + string("%d", GotoLine));    wait_of();  }   else      TL_ptr_run->wait_with_timeout(AnimationDelay * 70);}void gw_qs_observer::on_10(alg_qsort&, int i, int j) {  if(Abort) return;  show_active_line(13);  swap_nodes(i, j);  gw.set_color(A_node[j], green2);  gw.set_color(A_node[i], blue2);    Swaps++;  update_status_window();    TL_ptr_run->load_text_with_display(LanguagePath + "swap1.txt");  TL_ptr_run->disable_all_buttons();    if(GotoLine == 10)   {    TL_ptr_run->enable_all_buttons();    TL_ptr_run->set_button_label(1, goto_label + string("%d", GotoLine = 7));    wait_of();  }   else      TL_ptr_run->wait_with_timeout(AnimationDelay * 70); }void gw_qs_observer::on_11(alg_qsort&, int left, int j) {  if(Abort) return;    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -