Advertisement
Guest User

Ui

a guest
Nov 13th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.04 KB | None | 0 0
  1. #include "ui.h"
  2. #include "io.h"
  3. #include "analyze.h"
  4. #include <stdbool.h>
  5. #include <stdio.h>
  6.  
  7. //
  8. // Private
  9. //
  10. static void ui_invalid_input()
  11. {
  12. printf("info> bad input\n");
  13. }
  14.  
  15. static void ui_exit()
  16. {
  17. printf("info> bye\n");
  18. }
  19.  
  20. static char ui_get_choice()
  21. {
  22. char buf[3];
  23.  
  24. printf("input> ");
  25. return read_line(buf, 3) ? buf[0] : 0;
  26. }
  27.  
  28. static void ui_line(char c, int n)
  29. {
  30. while (n-- > 0) {
  31. putchar(c);
  32. }
  33. putchar('\n');
  34. }
  35.  
  36. static void ui_menu_options(const char *options[], int num_options)
  37. {
  38. int i;
  39.  
  40. for (i=0; i<num_options; i++) {
  41. printf(" %c) %s\n", 'a'+i, options[i]);
  42. }
  43. }
  44.  
  45. static void ui_menu()
  46. {
  47. const char *options[] = {
  48. "Menu",
  49. "Exit\n",
  50. "Bubble sort best case",
  51. "Bubble sort worst case",
  52. "Bubble sort average case",
  53. "Insertion sort best case",
  54. "Insertion sort worst case",
  55. "Insertion sort average case",
  56. "Quick sort best case",
  57. "Quick sort worst case",
  58. "Quick sort average case",
  59. "Linear sort best case",
  60. "Linear sort wors case",
  61. "Linear sort average case",
  62. "Binary sort best case",
  63. "Binary sort worst case",
  64. "Binary sort average case",
  65.  
  66. };
  67.  
  68. ui_line('=', MENU_WIDTH);
  69. ui_menu_options(options, sizeof(options) / sizeof(char *));
  70. ui_line('-', MENU_WIDTH);
  71. }
  72.  
  73. //
  74. // Public
  75. //
  76. void ui_run()
  77. {
  78. bool running, show_menu;
  79. result_t result[RESULT_ROWS];
  80.  
  81. show_menu = true;
  82. running = true;
  83. while (running) {
  84. if (show_menu) {
  85. show_menu = false;
  86. ui_menu();
  87. }
  88. switch (ui_get_choice()) {
  89. // House keeping
  90. case 'a':
  91. show_menu = true;
  92. break;
  93. case 'b':
  94. running = false;
  95. break;
  96. // Bubble sort
  97. case 'c':
  98. benchmark(bubble_sort_t, best_t, result, RESULT_ROWS);
  99. printf("todo> implemenet BE + present results in FE\n");
  100. break;
  101.  
  102. case 'd':
  103. benchmark(bubble_sort_t, worst_t, result, RESULT_ROWS);
  104. printf("todo> implemenet BE + present results in FE\n");
  105. break;
  106.  
  107. case 'e':
  108. benchmark(bubble_sort_t, average_t, result, RESULT_ROWS);
  109. printf("todo> implemenet BE + present results in FE\n");
  110. break;
  111.  
  112. case 'f':
  113. benchmark(insertion_sort_t, best_t, result, RESULT_ROWS);
  114. printf("todo> implemenet BE + present results in FE\n");
  115. break;
  116.  
  117. case 'g':
  118. benchmark(insertion_sort_t, worst_t, result, RESULT_ROWS);
  119. printf("todo> implemenet BE + present results in FE\n");
  120. break;
  121.  
  122. case 'h':
  123. benchmark(insertion_sort_t, average_t, result, RESULT_ROWS);
  124. printf("todo> implemenet BE + present results in FE\n");
  125. break;
  126.  
  127. case 'i':
  128. benchmark(quick_sort_t, best_t, result, RESULT_ROWS);
  129. printf("todo> implemenet BE + present results in FE\n");
  130. break;
  131.  
  132. case 'j':
  133. benchmark(quick_sort_t, worst_t, result, RESULT_ROWS);
  134. printf("todo> implemenet BE + present results in FE\n");
  135. break;
  136. case 'k':
  137. benchmark(quick_sort_t, average_t, result, RESULT_ROWS);
  138. printf("todo> implemenet BE + present results in FE\n");
  139. break;
  140. case 'l':
  141. benchmark(linear_search_t, best_t, result, RESULT_ROWS);
  142. printf("todo> implemenet BE + present results in FE\n");
  143. break;
  144. case 'm':
  145. benchmark(linear_search_t, worst_t, result, RESULT_ROWS);
  146. printf("todo> implemenet BE + present results in FE\n");
  147. break;
  148. case 'n':
  149. benchmark(linear_search_t, average_t, result, RESULT_ROWS);
  150. printf("todo> implemenet BE + present results in FE\n");
  151. break;
  152. case 'o':
  153. benchmark(binary_search_t, best_t, result, RESULT_ROWS);
  154. printf("todo> implemenet BE + present results in FE\n");
  155. break;
  156. case 'p':
  157. benchmark(binary_search_t, worst_t, result, RESULT_ROWS);
  158. printf("todo> implemenet BE + present results in FE\n");
  159. break;
  160. case 'q':
  161. benchmark(binary_search_t, average_t, result, RESULT_ROWS);
  162. printf("todo> implemenet BE + present results in FE\n");
  163. break;
  164. // Invalid input
  165. default:
  166. show_menu = false;
  167. ui_invalid_input();
  168. break;
  169. }
  170. }
  171. ui_exit();
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement