Advertisement
Guest User

Untitled

a guest
Nov 24th, 2014
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.07 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 Lab.rab._4
  8. {
  9. class Program
  10. {
  11. static void Main()
  12. {
  13. int[] mas = new int[1]; bool ok; int menu1 = -1, menu2 = -1;
  14.  
  15. Console.ForegroundColor = ConsoleColor.Cyan;
  16. Console.WriteLine("> Работа с массивом <");
  17. Console.ResetColor();
  18.  
  19. int size = SizeMas();
  20.  
  21. MenuInput();
  22.  
  23. do
  24. {
  25. try
  26. {
  27. Console.Write("> ");
  28. menu1 = Convert.ToInt32(Console.ReadLine());
  29. ok = true; if ((menu1 !=1)&&(menu1!=2)) { ok = false; Console.WriteLine("Error! \n"); };
  30. }
  31. catch (FormatException)
  32. {
  33. Console.WriteLine("Error!"); ok = false;
  34. }
  35. } while (!ok);
  36.  
  37. switch(menu1)
  38. {
  39. case 1: mas = RandomMas(size); break;
  40. case 2: mas = KeyMas(size); break;
  41. };
  42.  
  43. Print(mas);
  44.  
  45. do
  46. {
  47. Menu();
  48. do
  49. {
  50. try
  51. {
  52. Console.Write("> ");
  53. menu2 = Convert.ToInt32(Console.ReadLine());
  54. ok = true; if ((menu2 <= 0) && (menu2 >= 8)) { ok = false; Console.WriteLine("Error! \n"); };
  55. }
  56. catch (FormatException)
  57. {
  58. Console.WriteLine("Error!"); ok = false;
  59. }
  60. } while (!ok);
  61.  
  62. switch(menu2)
  63. {
  64. case 1:
  65. if (CheckMas(size) == true) { Console.WriteLine("Пустой массив. \nСгенерируйте новый массив. Введите MasNew=1 "); NewMas(); Main(); }
  66. else { mas = DelMinEl(ref size, mas); Print(mas); }; break;
  67. case 2: mas = AddElInMas(ref size, mas); Console.WriteLine(); Print(mas); break;
  68. case 3: mas = ChangeElMas(size, mas); Console.WriteLine(); Print(mas); break;
  69. case 4: mas = FindElMas(size, mas); Console.WriteLine(); Print(mas); break;
  70. case 5: mas = SortMas(size, mas); Console.WriteLine(); Print(mas); break;
  71. case 6: mas = FindInSortMas(size, mas); Console.WriteLine(); Print(mas); break;
  72. }
  73.  
  74. } while (menu2 != 7);
  75.  
  76. Console.ForegroundColor = ConsoleColor.Cyan;
  77. Console.WriteLine("\n> Работа с массивом завершена <\n");
  78. Console.ResetColor();
  79. Console.ReadKey();
  80.  
  81.  
  82. }
  83.  
  84. static int [] RandomMas(int size)
  85. {
  86. int[] randmas = new int[size];
  87. Random rnd = new Random();
  88. for (int i = 0; i < size; i++)
  89. randmas[i] = rnd.Next(0, 100);
  90. return randmas;
  91. }
  92.  
  93. static int [] KeyMas(int size)
  94. {
  95. int elkeymas = 0; bool ok;
  96. int[] keymas = new int[size];
  97.  
  98. for (int i = 0; i < size; i++)
  99. {
  100. do
  101. {
  102. try
  103. {
  104. Console.Write("Элемен массива= ");
  105. elkeymas = Int32.Parse(Console.ReadLine());
  106. ok = true;
  107. if (elkeymas < 0) { ok = false; Console.WriteLine("error!!! \n"); };
  108. }
  109. catch (FormatException)
  110. {
  111. Console.WriteLine("error!!! \n"); ok = false;
  112. }
  113. } while (!ok);
  114. keymas[i] = elkeymas;
  115. }
  116.  
  117. return keymas;
  118. }
  119.  
  120. static int SizeMas()
  121. {
  122. int size = 0; bool ok;
  123. do
  124. {
  125. try
  126. {
  127. Console.Write("\nВведите количество элементов в массиве = ");
  128. size = Convert.ToInt32(Console.ReadLine());
  129. ok = true;
  130. if (size <= 0) { ok = false; Console.WriteLine("Error! \n"); };
  131. }
  132. catch (FormatException)
  133. {
  134. Console.WriteLine("Error!"); ok = false;
  135. }
  136. } while (!ok);
  137. return size;
  138. }
  139.  
  140. static void Print(int [] mas)
  141. {
  142. foreach(int X in mas) Console.Write(X+" ");
  143. }
  144.  
  145. static void MenuInput()
  146. {
  147. Console.WriteLine("\n> Ввод массива: \n 1. Рандомно \n 2. С клавиатуры");
  148. }
  149.  
  150. static void Menu()
  151. {
  152. Console.Write("\n\n> Выберите действие:"
  153. +"\n 1. Удалить минимальный элемент "
  154. +"\n 2. Добавить N элементов, начиная после k номера "
  155. +"\n 3. Поменять местами элементы с четными и нечетными индексами"
  156. +"\n 4. Найти элемент с заданным значением \n 5. Сортировать массив (простой выбор) "
  157. +"\n 6. Найти элемент в отсортированном(!!!) массиве \n 7. Выход \n");
  158. }
  159.  
  160. static int [] DelMinEl(ref int size, int [] mas)
  161. {
  162. if (size == 1) { Console.WriteLine("Массив состоит из единственного элемента, удаление которого приведет к пустому массиву"); return mas; };
  163. int min = 0, min_k = 0; int j, k1;
  164. for (int k = 0; k <= size - 1; k++)
  165. {
  166. if (k == 0) { if (mas[k] < mas[k + 1]) { min = mas[k]; min_k = k; } else { min = mas[k + 1]; min_k = k + 1; }; continue; };
  167. if (mas[k] < min) { min = mas[k]; min_k = k; };
  168. }
  169. Console.WriteLine("Минимальный элемент {0} находится на {1}-й позиции", min, (min_k + 1));
  170.  
  171. int[] mas_new = new int[size - 1];
  172. for (j = 0, k1 = 0; j < min_k; j++, k1++)
  173. mas_new[j] = mas[k1];
  174. for (; j < size - 1; j++, k1++)
  175. mas_new[j] = mas[k1 + 1];
  176.  
  177. size--;
  178. return mas_new;
  179. }
  180.  
  181. static int [] AddElInMas(ref int size, int [] mas)
  182. {
  183. bool ok; int N=0 , k=-1; int a, b, c;
  184.  
  185. do
  186. {
  187. try
  188. {
  189. Console.Write("N = ");
  190. N = Convert.ToInt32(Console.ReadLine());
  191. ok = true; if (N <= 0) { ok = false; Console.WriteLine("Error! \n"); };
  192. }
  193. catch (FormatException)
  194. {
  195. Console.WriteLine("Error!"); ok = false;
  196. }
  197. } while (!ok);
  198.  
  199. do
  200. {
  201. try
  202. {
  203. Console.Write("k = ");
  204. k = Convert.ToInt32(Console.ReadLine());
  205. ok = true;
  206. if ((k > size)||(k<0)) { ok = false; Console.WriteLine("Error! \n"); };
  207. }
  208. catch (FormatException)
  209. {
  210. Console.WriteLine("Error!"); ok = false;
  211. }
  212. } while (!ok);
  213.  
  214. int[] mas1 = new int[size + N]; int add = 0;
  215.  
  216. Console.WriteLine("\n> Добавить элементы: \n 1. Рандомно \n 2. С клавиатуры ");
  217. do
  218. {
  219. try
  220. {
  221. Console.Write("> ");
  222. add = Convert.ToInt32(Console.ReadLine());
  223. ok = true; if ((add!=1)&&(add!=2)) { ok = false; Console.WriteLine("Error! \n"); };
  224. }
  225. catch (FormatException)
  226. {
  227. Console.WriteLine("Error!"); ok = false;
  228. }
  229. } while (!ok);
  230.  
  231. switch(add)
  232. {
  233. case 1:
  234. {
  235. for (a = 0, b = 0; a < k ; a++, b++)
  236. mas1[b] = mas[a];
  237. Random rnd = new Random();
  238. for (c = 1; c <= N; c++, b++)
  239. mas1[b] = rnd.Next(0, 100);
  240. for (; b < size + N; a++, b++)
  241. mas1[b] = mas[a];
  242. }
  243. break;
  244.  
  245. case 2:
  246. {
  247. int elkeymas = 0;
  248. for (a = 0, b = 0; a < k - 1; a++, b++)
  249. mas1[b] = mas[a];
  250. for (c = 1; c <= N; c++, b++)
  251. {
  252. do
  253. {
  254. try
  255. {
  256. Console.Write("Элемен массива= ");
  257. elkeymas = Int32.Parse(Console.ReadLine());
  258. ok = true;
  259. if (elkeymas < 0) { ok = false; Console.WriteLine("error!!! \n"); };
  260. }
  261. catch (FormatException)
  262. {
  263. Console.WriteLine("error!!! \n"); ok = false;
  264. }
  265. } while (!ok);
  266. mas1[c] = elkeymas;
  267. }
  268. for (; b < size + N; a++, b++)
  269. mas1[b] = mas[a];
  270. break;
  271. }
  272. }
  273.  
  274. size = size + N;
  275. return mas1;
  276. }
  277.  
  278. static int[] ChangeElMas(int size, int[] mas)
  279. {
  280. for (int w = 0; w < size - 1; w += 2)
  281. {
  282. int temp1 = mas[w];
  283. mas[w] = mas[w + 1];
  284. mas[w + 1] = temp1;
  285. }
  286.  
  287. return mas;
  288. }
  289.  
  290. static int [] FindElMas(int size, int [] mas)
  291. {
  292. int findout = 0; bool ok;int index = -1; int i;
  293.  
  294. do
  295. {
  296. try
  297. {
  298. Console.Write("Найти элемент = ");
  299. findout = Convert.ToInt32(Console.ReadLine());
  300. ok = true; if (findout < 0) { ok = false; Console.WriteLine("Error! \n"); };
  301. }
  302. catch (FormatException)
  303. {
  304. Console.WriteLine("Error!"); ok = false;
  305. }
  306. } while (!ok);
  307.  
  308. for (i = 0; i < size; i++)
  309. if (mas[i] == findout) { index = i; break; }
  310. if (index < 0) Console.WriteLine("Ваш элемент не найден");
  311. else { Console.WriteLine("Ваш элемент находится на позиции " + (index + 1)); Console.WriteLine("Произведено сравнений = " + i); };
  312.  
  313. return mas;
  314. }
  315.  
  316. static int [] SortMas(int size, int [] mas)
  317. {
  318. for (int z = 0; z < size - 1; z++)
  319. {
  320. int min = z;
  321. for (int g = z + 1; g < size; g++)
  322. {
  323. if (mas[g] < mas[min]) min = g;
  324. }
  325. int temp = mas[z];
  326. mas[z] = mas[min];
  327. mas[min] = temp;
  328. }
  329. return mas;
  330. }
  331.  
  332. static int [] FindInSortMas(int size, int [] mas)
  333. {
  334. int left = 0; int right = size - 1; int ser = 0; int M = 0; int findin = 0; bool ok;
  335.  
  336. do
  337. {
  338. try
  339. {
  340. Console.Write("Найти элемент = ");
  341. findin = Convert.ToInt32(Console.ReadLine());
  342. ok = true; if (findin < 0) { ok = false; Console.WriteLine("Error! \n"); };
  343. }
  344. catch (FormatException)
  345. {
  346. Console.WriteLine("Error!"); ok = false;
  347. }
  348. } while (!ok);
  349.  
  350. do
  351. {
  352. M++;
  353. } while ((Math.Pow(2, M)) < size);
  354.  
  355. do
  356. {
  357. ser = (left + right) / 2;
  358. if (mas[ser] < findin) left = ser + 1; else right = ser;
  359. } while (left != right);
  360.  
  361. if (mas[left] == findin) { Console.WriteLine("Элемент {0} находится на {1}-й позиции ", findin, (left + 1)); Console.WriteLine("Произведено сравнений = " + M);}
  362. else Console.WriteLine("Ваш элемент не найден");
  363.  
  364. return mas;
  365. }
  366.  
  367. static bool CheckMas( int size )
  368. {
  369. if (size == 1) return true; else return false;
  370. }
  371.  
  372. static int NewMas()
  373. {
  374. int nm = 0; bool ok;
  375. do
  376. {
  377. try
  378. {
  379. Console.Write("\nNewMas = ");
  380. nm = Convert.ToInt32(Console.ReadLine());
  381. ok = true;
  382. if (nm != 1) { ok = false; Console.WriteLine("Error! \n"); };
  383. }
  384. catch (FormatException)
  385. {
  386. Console.WriteLine("Error!"); ok = false;
  387. }
  388. } while (!ok);
  389. return nm;
  390. }
  391. }
  392. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement