Advertisement
Guest User

Untitled

a guest
Jan 16th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.58 KB | None | 0 0
  1. using System;
  2.  
  3.  
  4. namespace laba4
  5. {
  6. class Program
  7. {
  8. static void Sort1(int[] StartMassive, int SizeMaasive)
  9. {
  10. if (MassiveVoid(StartMassive, ref SizeMaasive))
  11. {
  12. for (int i = 1; i < StartMassive.Length; i++)
  13. for (int j = StartMassive.Length - 1; j >= i; j--)
  14. if (StartMassive[j] < StartMassive[j - 1])
  15. {
  16. int Num = StartMassive[j];
  17. StartMassive[j] = StartMassive[j - 1];
  18. StartMassive[j - 1] = Num;
  19. }
  20. Console.WriteLine("Сортировка выполнена");
  21. }
  22. else
  23. Console.WriteLine("Сортировка не выполнена, массив пустой");
  24. }//Сортировка массива
  25. static void Sort2(int[] StartMassive, ref int SizeMaasive)
  26.  
  27. {
  28. int j, el, i;
  29. for (i = 1; i < SizeMaasive; i++)
  30. {
  31. el = StartMassive[i];
  32. j = i - 1;
  33. while (j >= 0 && el < StartMassive[j])
  34. {
  35. StartMassive[j + 1] = StartMassive[j];
  36. j--;
  37. }
  38. StartMassive[j + 1] = el;
  39. }
  40. }//метод включения
  41. static void quickSort(int[] a, int l, int r)
  42. {
  43. int temp;
  44. int x = a[l + (r - l) / 2];
  45. int i = l;
  46. int j = r;
  47. while (i <= j)
  48. { while (a[i] < x) i++; while (a[j] > x) j--;
  49. if (i <= j) { temp = a[i]; a[i] = a[j]; a[j] = temp; i++; j--; }
  50. }
  51. if (i < r) quickSort(a, i, r); if (l < j) quickSort(a, l, j);
  52. }//быстрая сортировка
  53.  
  54.  
  55. static int[] CreateMassiveRandom(out int SizeMassive)
  56. {
  57. Console.Clear();
  58. Console.WriteLine("Введите количество элементов массива");
  59.  
  60. int Big, Low; //Количество элементов cлучайного массива, верхняя и нижжняя граница
  61.  
  62. while ((!Int32.TryParse(Console.ReadLine(), out SizeMassive)) || (SizeMassive <= 0))
  63. Console.WriteLine("Ввод неверен! Введите положительное целое значение");
  64.  
  65. Console.WriteLine("Введите Верхнюю границу массива (максимально возможное значение случайного числа)");
  66. while (!Int32.TryParse(Console.ReadLine(), out Big))
  67. Console.WriteLine("Ввод неверен!");
  68. Console.WriteLine("Введите Нижнюю границу массива (минимально возможное значение случайного числа)");
  69. while ((!Int32.TryParse(Console.ReadLine(), out Low)) || (Big < Low))
  70. Console.WriteLine("Введите число меньше верхней границы");
  71. int[] StartMassive = new int[SizeMassive];
  72. Random rand = new Random();
  73. for (int i = 0; i < StartMassive.Length; i++)
  74. StartMassive[i] = rand.Next(Low, Big + 1);
  75. return StartMassive;
  76.  
  77. }//Создание массива с помощью ДСЧ
  78. static int[] CreateMassiveKey(out int SizeMassive)
  79. {
  80. Console.Clear();
  81. Console.WriteLine("Введите количество элементов массива");
  82. while ((!Int32.TryParse(Console.ReadLine(), out SizeMassive)) || (SizeMassive <= 0))
  83. Console.WriteLine("Ввод неверен! Введите положительное целое значение");
  84. int[] StartMassive = new int[SizeMassive];
  85. for (int i = 0; i < StartMassive.Length; i++)
  86. {
  87. Console.WriteLine(string.Format("Введите {0}й элемент массива:", i + 1));
  88. while (!Int32.TryParse(Console.ReadLine(), out StartMassive[i]))
  89. Console.WriteLine("Таких цифр не знаю"); //Ручной ввод элементов массива
  90. }
  91. return StartMassive;
  92.  
  93. }//Создание массива с клавиатуры
  94. static void ShowMassive(int[] StartMassive, int SizeMassive)
  95. {
  96. Console.Clear();
  97. if (MassiveVoid(StartMassive, ref SizeMassive))
  98. {
  99. foreach (int element in StartMassive)
  100. {
  101. Console.ForegroundColor = ConsoleColor.Yellow;
  102. Console.Write(element + " ");
  103. Console.ForegroundColor = ConsoleColor.Gray;
  104. }
  105. }
  106. else Console.WriteLine("Массив пустой!");
  107. }//Печать массива
  108. static bool MassiveVoid(int[] StartMassive, ref int SizeMassive)
  109. {
  110.  
  111. if (StartMassive.Length == 0)
  112. {
  113. if (SizeMassive != 0) SizeMassive = 0;
  114.  
  115. return false;
  116. }
  117.  
  118. return true;
  119. }//Проверка пустоты массива
  120. static void ShowMenu1(int[] StartMassive, int SizeMassive)
  121. {
  122. Console.Clear();
  123. Console.WriteLine("Меню");
  124. Console.WriteLine("Выберите способ ввода массива");
  125. Console.WriteLine("1. Случайная генерация массива");
  126. Console.WriteLine("2. Ручной ввод массива");
  127. Console.WriteLine("3. Выход");
  128. int choose = 0;
  129. while ((!Int32.TryParse(Console.ReadLine(), out choose)) || (choose > 3) || (choose < 1))
  130. Console.WriteLine("Таких цифр не знаю");
  131. switch (choose)
  132. {
  133. case 1:
  134. StartMassive = CreateMassiveRandom(out SizeMassive);
  135. Go(StartMassive, SizeMassive);
  136. break;
  137. case 2:
  138. StartMassive = CreateMassiveKey(out SizeMassive);
  139. Go(StartMassive, SizeMassive);
  140. break;
  141. case 3: //Выход
  142. Environment.Exit(0);
  143. break;
  144.  
  145. }
  146. Console.ReadKey();
  147. }//Выбор способа создания массива
  148. static void ShowMenu2()
  149. {
  150. Console.WriteLine("");
  151. Console.WriteLine("Выберите действие с массивом");
  152. Console.WriteLine("1. Печать массива");
  153. Console.WriteLine("2. Сортировка выбором");
  154. Console.WriteLine("3. Сортирова методом включения");
  155. Console.WriteLine("4. Сортирова быстрая");
  156. Console.WriteLine("5. Назад к созданию массива");
  157. }//Выбор действия с массивом
  158. static void InitMassive(out int SizeMassive, out int[] StartMassive)
  159. {
  160. SizeMassive = 0;
  161. StartMassive = null;
  162. }//Инициализация массива
  163. static void Go(int[] StartMassive, int SizeMassive)
  164. {
  165. ShowMenu2();
  166. int choose1;
  167. bool sort = false;
  168. while ((!Int32.TryParse(Console.ReadLine(), out choose1)) || (choose1 > 8) || (choose1 < 1))
  169. Console.WriteLine("Таких цифр не знаю");
  170. switch (choose1)
  171. {
  172. case 1:
  173. ShowMassive(StartMassive, SizeMassive);
  174. Go(StartMassive, SizeMassive);
  175. sort = false;
  176. break;//Печать массива
  177. case 2:
  178. if (!sort) //не отсортирован
  179. Sort1(StartMassive, SizeMassive);
  180. sort = true;//Отсортирован
  181. ShowMassive(StartMassive, SizeMassive);
  182. Go(StartMassive, SizeMassive);
  183. break;//Сортировка массива
  184. case 3:
  185. if (!sort) //не отсортирован
  186. Sort2(StartMassive, ref SizeMassive);
  187. sort = true;//Отсортирован
  188. ShowMassive(StartMassive, SizeMassive);
  189. Go(StartMassive, SizeMassive);
  190. break;
  191. case 4:
  192. quickSort(StartMassive, 0, SizeMassive - 1);
  193. ShowMassive(StartMassive, SizeMassive);
  194. Go(StartMassive, SizeMassive);
  195. break;
  196. case 5:
  197. ShowMenu1(StartMassive, SizeMassive);
  198. break;
  199. }
  200. }//Вызов функций действия с массивами
  201. static void Main(string[] args)
  202. {
  203. Console.WriteLine("Практическая работа номер 4");
  204. int SizeMassive;
  205. int[] StartMassive;
  206. InitMassive(out SizeMassive, out StartMassive);
  207. ShowMenu1(StartMassive, SizeMassive);
  208. Console.ReadKey();
  209. }
  210.  
  211. }
  212. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement