Advertisement
Guest User

Untitled

a guest
Nov 25th, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 12.15 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace LAB4
  8. {
  9. class Program
  10. {
  11. static int ArraySizeInput(out int size)
  12. {
  13. bool OK;
  14. do
  15. {
  16. Console.WriteLine("Введите количество элементов массива: ");
  17. OK = Int32.TryParse(Console.ReadLine(), out size);
  18. if ((!OK) || (size <= 0))
  19. {
  20.  
  21. Console.WriteLine("Невозможно создать такой массив! Количество элементов может быть только натуральным числом");
  22.  
  23. }
  24. } while ((!OK) || (size <= 0));
  25. return size;
  26. }
  27.  
  28. static int WOGOArray(out int num)
  29. {
  30. bool OK;
  31. do
  32. {
  33. Console.WriteLine("Выберите способ задания массива: ");
  34. Console.WriteLine("1. Задать массив с помощью датчика случайных чисел");
  35. Console.WriteLine("2. Задать массив c клавиатуры");
  36.  
  37. OK = Int32.TryParse(Console.ReadLine(), out num);
  38. if ((!OK) || (num > 2) || (num <= 0))
  39. {
  40.  
  41. Console.WriteLine("Ошибка ввода. Введите число 1 или 2");
  42.  
  43. }
  44. } while ((!OK) || (num > 2) || (num <= 0));
  45. return num;
  46. }
  47. static int[] RandomGenOfArray(int size)
  48. {
  49. int[] arr = new int[size];
  50. Random rand = new Random();
  51. for (int i = 0; i < size; i++)
  52. {
  53. arr[i] = rand.Next(-100, 100);
  54. }
  55. return arr;
  56. }
  57. static int[] ManualGenOfArray(int size)
  58. {
  59. int j = 0;
  60. bool OK;
  61. int[] arr = new int[size];
  62. for (int i = 0; i < size; i++)
  63. {
  64. do
  65. {
  66. Console.WriteLine("Введите элемент массива № {0} ", i + 1);
  67. OK = int.TryParse(Console.ReadLine(), out arr[i]);
  68. if (arr[i] == 0) j++;
  69. if (j == size)
  70. {
  71. Console.WriteLine("Внимание!\nВы создали нулевой массив");
  72. }
  73. if (!OK)
  74. {
  75. Console.WriteLine("Ошибка ввода. Повторите ввод");
  76.  
  77. }
  78. } while (!OK);
  79. }
  80. return arr;
  81. }
  82.  
  83. static void Printout(int size, int[] arr)
  84. {
  85. for (int i = 0; i < size; i++)
  86. Console.Write(arr[i] + " ");
  87.  
  88. Console.WriteLine();
  89.  
  90. }
  91.  
  92. static int GetOption(out int answer)
  93. {
  94. bool OK;
  95. do
  96. {
  97. Console.WriteLine("Введите: ");
  98. OK = Int32.TryParse(Console.ReadLine(), out answer);
  99. if ((!OK) | (answer < 0) | (answer > 7))
  100. {
  101.  
  102. Console.WriteLine("Ошибка. Повторите ввод. Необходимо ввести число от 1 до 7 для того, чтобы выбрать, что сделать с массивом.");
  103.  
  104. }
  105. } while ((!OK) || (answer < 0) || (answer > 7));
  106. return answer;
  107. }
  108.  
  109. static void Del(ref int size, ref int[] arr)
  110. {
  111.  
  112. int j = 0;
  113. for (int i = 0; i < size; i++)
  114. {
  115. if (arr[i] % 2 == 0)
  116. {
  117. j++;
  118. }
  119. }
  120. int k = 0;
  121. int[] arrN = new int[size - j];
  122. for(int i = 0; i < size; i++)
  123. {
  124. if (arr[i] % 2 != 0)
  125. {
  126. arrN[k] = arr[i];
  127. k++;
  128. }
  129. }
  130. size -= j;
  131. arr = arrN;
  132. Console.WriteLine();
  133. arr = arrN;
  134. }
  135.  
  136. static int KInput(int size)
  137. {
  138. int k;
  139. bool OK;
  140. do
  141. {
  142. Console.WriteLine("Введите число k, чтобы добавить k элементов в массив");
  143. OK = Int32.TryParse(Console.ReadLine(), out k);
  144. if ((!OK) || (k < 0))
  145. {
  146.  
  147. Console.WriteLine("Ошибка! Введите натуральное число.");
  148.  
  149. }
  150. } while ((!OK) || (k < 0));
  151. return k;
  152. }
  153. static int[] ArrExtend(int size, int[] arr, int k)
  154. {
  155. bool OK;
  156. int[] arrK = new int[size + k];
  157. for (int i = size-1; i >= 0; i--)
  158. {
  159. arrK[i+k] = arr[i];
  160. }
  161. for (int i = 0; i < k; i++)
  162. {
  163. do
  164. {
  165. Console.WriteLine("Введите элемент массива № {0} ", i + 1);
  166. OK = int.TryParse(Console.ReadLine(), out arrK[i]);
  167. if (!OK)
  168. {
  169.  
  170.  
  171. Console.WriteLine("Ошибка! Введите целое число.");
  172.  
  173.  
  174. }
  175. } while (!OK);
  176. }
  177.  
  178. return arrK;
  179. }
  180. static int[] EOSort(int size, int[] arr)
  181. {
  182. int[] arrK = new int [size];
  183. int j = 0;
  184. for (int i = 0; i < size - 1; i ++)
  185. {
  186. if (arr[i] % 2 == 0)
  187. {
  188. arrK[j] = arr[i];
  189. j++;
  190. }
  191. }
  192. for (int i = 0; i < size - 1; i ++)
  193. {
  194. if (arr[i] % 2 != 0)
  195. {
  196. arrK[j] = arr[i];
  197. j++;
  198. }
  199. }
  200.  
  201. return arrK;
  202. }
  203. static void EvenSearch(int size, int[] arr)
  204. {
  205. int j = 0;
  206. for (int i = 0; i < size; i++)
  207. {
  208. if (arr[i] % 2 == 0)
  209. {
  210. Console.WriteLine("Первый чётный элемент - это элемент № {0}: {1}", i + 1, arr[i]);
  211. break;
  212. }
  213. else j++;
  214. if (j == size)
  215. {
  216.  
  217. Console.WriteLine("В массиве нет чётных элементов.");
  218.  
  219. }
  220.  
  221. }
  222. }
  223. static int[] SortArray(int size, int[] arr)
  224. {
  225. int min, n_min, j;
  226. for (int i = 0; i < size; i++)
  227. {
  228. min = arr[i]; n_min = i;
  229. for(j = i + 1; j < size; j++)
  230. if(arr[j] < min)
  231. {
  232. min = arr[j];
  233. n_min = j;
  234. }
  235. arr[n_min] = arr[i];
  236. arr[i] = min;
  237. }
  238. return arr;
  239. }
  240. static void BinarySearch(int size, int[] arr, int NumberForFind)
  241. {
  242. bool OK;
  243. do
  244. {
  245. Console.WriteLine("Введите элемент массива, который необходимо найти: ");
  246. OK = Int32.TryParse(Console.ReadLine(), out NumberForFind);
  247. if (!OK)
  248. {
  249. Console.WriteLine("Ошибка! Введите целое число.");
  250.  
  251. }
  252. } while (!OK);
  253.  
  254. int left = 1, right = size - 1, sred;
  255. do
  256. {
  257. sred = (left + right) / 2;
  258. arr = SortArray(size, arr);
  259. if (arr[sred] < NumberForFind)
  260. {
  261. left = sred + 1;
  262. }
  263. else
  264. {
  265. right = sred;
  266. }
  267. } while (left != right);
  268. if (arr[left] == NumberForFind)
  269. {
  270. Console.WriteLine("Искомый элемент: {0}, это элемент массива № {1}", NumberForFind, left + 1);
  271. }
  272. else
  273. {
  274. Console.ForegroundColor = ConsoleColor.Red;
  275. Console.WriteLine("Элемент не найден");
  276. Console.ResetColor();
  277. }
  278. }
  279.  
  280. public static void Main(string[] args)
  281. {
  282.  
  283. int size, answer1, answer2, k, NumberForFind = 0;
  284. size = ArraySizeInput(out size);
  285.  
  286. int[] arr = new int[size];
  287. answer1 = WOGOArray(out int num);
  288. switch (answer1)
  289. {
  290. case 1:
  291. {
  292. arr = RandomGenOfArray(size);
  293. break;
  294. }
  295. case 2:
  296. {
  297. arr = ManualGenOfArray(size);
  298. break;
  299. }
  300. }
  301. Console.WriteLine();
  302. Printout(size, arr);
  303. do
  304. {
  305. Console.WriteLine("Действия с массивом:");
  306. Console.WriteLine("1. Удаление всех чётных элементов.");
  307. Console.WriteLine("2. Добавление К элементов в начало массива.");
  308. Console.WriteLine("3. Перемещение чётных элементов в начало, а нечётных – в конец массива.");
  309. Console.WriteLine("4. Нахождение первого чётного элемента.");
  310. Console.WriteLine("5. Сортировка методом простого выбора.");
  311. Console.WriteLine("6. Поиск.");
  312. Console.WriteLine("7. Выход");
  313.  
  314. answer2 = GetOption(out int answer);
  315. switch (answer2)
  316. {
  317. case 1:
  318. {
  319. Del(ref size, ref arr);
  320. break;
  321. }
  322. case 2:
  323. {
  324. k = KInput(size);
  325. arr = ArrExtend(size, arr, k);
  326. size = size + k;
  327. break;
  328. }
  329. case 3:
  330. {
  331. arr = EOSort(size, arr);
  332. break;
  333. }
  334. case 4:
  335. {
  336. EvenSearch(size, arr);
  337. break;
  338. }
  339. case 5:
  340. {
  341. arr = SortArray(size, arr);
  342. break;
  343. }
  344. case 6:
  345. {
  346. BinarySearch(size, arr, NumberForFind);
  347. break;
  348. }
  349. case 7:
  350. {
  351. Console.WriteLine("Выйти из программы");
  352. continue;
  353. }
  354. }
  355. Console.WriteLine();
  356. Printout(size, arr);
  357. Console.WriteLine();
  358. } while (answer2 != 7);
  359. Console.ReadKey();
  360. }
  361. }
  362. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement