Advertisement
RayaStark

Untitled

Feb 21st, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.82 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace _11.ArrayManipulator
  5. {
  6. public class Program
  7. {
  8. static void Main(string[] args)
  9. {
  10. int[] input = Console.ReadLine().Split().Select(int.Parse).ToArray();
  11. string fakeCommand;
  12.  
  13. while ((fakeCommand = Console.ReadLine()) != "end")
  14. {
  15. string[] command = fakeCommand.Split().ToArray();
  16. switch (command[0])
  17. {
  18. case "exchange":
  19. int index = int.Parse(command[1]);
  20. if (index > input.Length - 1 || index < 0)
  21. {
  22. Console.WriteLine("Invalid index");
  23. }
  24. else
  25. {
  26. input = Exchange(input, index);
  27. }
  28. break;
  29. case "max":
  30. string maxEvenOrOdd = command[1];
  31. if (maxEvenOrOdd == "even")
  32. {
  33. int k = MaxEven(input)[0];
  34. int maxIndex = MaxEven(input)[1];
  35. if (k == int.MinValue)
  36. {
  37. Console.WriteLine("No matches");
  38. }
  39. else
  40. {
  41. Console.WriteLine(maxIndex);
  42. }
  43. }
  44. else if (maxEvenOrOdd == "odd")
  45. {
  46. int k = MaxOdd(input)[0];
  47. int maxIndex = MaxOdd(input)[1];
  48. if (k == int.MinValue)
  49. {
  50. Console.WriteLine("No matches");
  51. }
  52. else
  53. {
  54. Console.WriteLine(maxIndex);
  55. }
  56. }
  57. break;
  58. case "min":
  59. string minEvenOrOdd = command[1];
  60. if (minEvenOrOdd == "even")
  61. {
  62. int k = MinEven(input)[0];
  63. int minIndex = MinEven(input)[1];
  64. if (k == int.MinValue)
  65. {
  66. Console.WriteLine("No matches");
  67. }
  68. else
  69. {
  70. Console.WriteLine(minIndex);
  71. }
  72. }
  73. else if (minEvenOrOdd == "odd")
  74. {
  75. int k = MinOdd(input)[0];
  76. int minIndex = MinOdd(input)[1];
  77. if (k == int.MinValue)
  78. {
  79. Console.WriteLine("No matches");
  80. }
  81. else
  82. {
  83. Console.WriteLine(minIndex);
  84. }
  85. }
  86. break;
  87. case "first":
  88. int firstCount = int.Parse(command[1]);
  89. if (firstCount > input.Length || firstCount < 0)
  90. {
  91. Console.WriteLine("Invalid count");
  92. }
  93. else
  94. {
  95. string needed = command[2];
  96. if (needed == "even")
  97. {
  98. FirstEven(input, firstCount);
  99. }
  100. else if (needed == "odd")
  101. {
  102. FirstOdd(input, firstCount);
  103. }
  104. }
  105. break;
  106. case "last":
  107. int lastCount = int.Parse(command[1]);
  108. if (lastCount > input.Length || lastCount < 0)
  109. {
  110. Console.WriteLine("Invalid count");
  111. }
  112. else
  113. {
  114. string needed = command[2];
  115. if (needed == "even")
  116. {
  117. LastEven(input, lastCount);
  118. }
  119. else if (needed == "odd")
  120. {
  121. LastOdd(input, lastCount);
  122. }
  123. }
  124. break;
  125. }
  126. }
  127.  
  128. Console.WriteLine('[' + string.Join(", ", input) + ']');
  129. }
  130.  
  131. public static int[] Exchange(int[] input, int index)
  132. {
  133. int[] output = new int[input.Length];
  134. int j = 0;
  135. for (int i = index + 1; i <= input.Length - 1; i++)
  136. {
  137. output[j] = input[i];
  138. j++;
  139. }
  140. for (int i = 0; i <= index; i++)
  141. {
  142. output[j] = input[i];
  143. j++;
  144. }
  145. return output;
  146. }
  147.  
  148. public static int[] MaxOdd(int[] input)
  149. {
  150. int[] indexes = new int[2];
  151. int maxOddIndex = 0;
  152. int k = int.MinValue;
  153.  
  154. for (int i = 0; i < input.Length; i++)
  155. {
  156. if (input[i] % 2 != 0)
  157. {
  158. maxOddIndex = i;
  159. k = i;
  160. break;
  161. }
  162. }
  163.  
  164. for (int i = 0; i < input.Length; i++)
  165. {
  166. if (input[i] % 2 != 0 && input[i] >= input[maxOddIndex])
  167. {
  168. maxOddIndex = i;
  169. }
  170. }
  171.  
  172. indexes[0] = k;
  173. indexes[1] = maxOddIndex;
  174. return indexes;
  175. }
  176.  
  177. public static int[] MaxEven(int[] input)
  178. {
  179. int[] indexes = new int[2];
  180. int maxEvenIndex = 0;
  181. int k = int.MinValue;
  182.  
  183. for (int i = 0; i < input.Length; i++)
  184. {
  185. if (input[i] % 2 == 0)
  186. {
  187. maxEvenIndex = i;
  188. k = i;
  189. break;
  190. }
  191. }
  192.  
  193. for (int i = 0; i < input.Length; i++)
  194. {
  195. if (input[i] % 2 == 0 && input[i] >= input[maxEvenIndex])
  196. {
  197. maxEvenIndex = i;
  198. }
  199. }
  200.  
  201. indexes[0] = k;
  202. indexes[1] = maxEvenIndex;
  203. return indexes;
  204. }
  205.  
  206. public static int[] MinOdd(int[] input)
  207. {
  208. int[] indexes = new int[2];
  209. int minOddIndex = 0;
  210. int k = int.MinValue;
  211.  
  212. for (int i = 0; i < input.Length; i++)
  213. {
  214. if (input[i] % 2 != 0)
  215. {
  216. minOddIndex = i;
  217. k = i;
  218. break;
  219. }
  220. }
  221.  
  222. for (int i = 0; i < input.Length; i++)
  223. {
  224. if (input[i] % 2 != 0 && input[i] <= input[minOddIndex])
  225. {
  226. minOddIndex = i;
  227. }
  228. }
  229.  
  230. indexes[0] = k;
  231. indexes[1] = minOddIndex;
  232. return indexes;
  233. }
  234.  
  235. public static int[] MinEven(int[] input)
  236. {
  237. int[] indexes = new int[2];
  238. int minEvenIndex = 0;
  239. int k = int.MinValue;
  240.  
  241. for (int i = 0; i < input.Length; i++)
  242. {
  243. if (input[i] % 2 == 0)
  244. {
  245. minEvenIndex = i;
  246. k = i;
  247. break;
  248. }
  249. }
  250.  
  251. for (int i = 0; i < input.Length; i++)
  252. {
  253. if (input[i] % 2 == 0 && input[i] <= input[minEvenIndex])
  254. {
  255. minEvenIndex = i;
  256. }
  257. }
  258.  
  259. indexes[0] = k;
  260. indexes[1] = minEvenIndex;
  261. return indexes;
  262. }
  263.  
  264. public static void FirstEven(int[] input, int count)
  265. {
  266. int countEven = 0;
  267. int[] output = new int[count];
  268. for (int i = 0; i < input.Length; i++)
  269. {
  270. if (countEven >= count)
  271. {
  272. break;
  273. }
  274. else
  275. {
  276. if (input[i] % 2 == 0)
  277. {
  278. output[countEven] = input[i];
  279. countEven++;
  280. }
  281. }
  282. }
  283.  
  284. int[] result = new int[countEven];
  285.  
  286. for (int i = 0; i < countEven; i++)
  287. {
  288. result[i] = output[i];
  289. }
  290.  
  291. if (output.Sum() == 0)
  292. {
  293. Console.WriteLine("[]");
  294. }
  295. else
  296. {
  297. Console.WriteLine("[" + string.Join(", ", result) + "]");
  298. }
  299. }
  300.  
  301. public static void FirstOdd(int[] input, int count)
  302. {
  303. int countOdd = 0;
  304. int[] output = new int[count];
  305. for (int i = 0; i < input.Length; i++)
  306. {
  307. if (countOdd >= count)
  308. {
  309. break;
  310. }
  311. else
  312. {
  313. if (input[i] % 2 != 0)
  314. {
  315. output[countOdd] = input[i];
  316. countOdd++;
  317. }
  318. }
  319. }
  320.  
  321. int[] result = new int[countOdd];
  322.  
  323. for (int i = 0; i < countOdd; i++)
  324. {
  325. result[i] = output[i];
  326. }
  327.  
  328. if (output.Sum() == 0)
  329. {
  330. Console.WriteLine("[]");
  331. }
  332. else
  333. {
  334. Console.WriteLine("[" + string.Join(", ", result) + "]");
  335. }
  336. }
  337.  
  338. public static void LastEven(int[] input, int count)
  339. {
  340. int countEven = 0;
  341. int[] output = new int[count];
  342. for (int i = input.Length - 1; i >= 0; i--)
  343. {
  344. if (countEven >= count)
  345. {
  346. break;
  347. }
  348. else
  349. {
  350. if (input[i] % 2 == 0)
  351. {
  352. output[countEven] = input[i];
  353. countEven++;
  354. }
  355. }
  356. }
  357.  
  358. int[] result = new int[countEven];
  359. int length = countEven - 1;
  360.  
  361. for (int i = 0; i < countEven; i++)
  362. {
  363. result[i] = output[length];
  364. length--;
  365. }
  366.  
  367. if (output.Sum() == 0)
  368. {
  369. Console.WriteLine("[]");
  370. }
  371. else
  372. {
  373. Console.WriteLine("[" + string.Join(", ", result) + "]");
  374. }
  375. }
  376. public static void LastOdd(int[] input, int count)
  377. {
  378. int countOdd = 0;
  379. int[] output = new int[count];
  380. for (int i = input.Length - 1; i >= 0; i--)
  381. {
  382. if (countOdd >= count)
  383. {
  384. break;
  385. }
  386. else
  387. {
  388. if (input[i] % 2 != 0)
  389. {
  390. output[countOdd] = input[i];
  391. countOdd++;
  392. }
  393. }
  394. }
  395.  
  396. int[] result = new int[countOdd];
  397. int length = countOdd - 1;
  398.  
  399. for (int i = 0; i < countOdd; i++)
  400. {
  401. result[i] = output[length];
  402. length--;
  403. }
  404.  
  405. if (output.Sum() == 0)
  406. {
  407. Console.WriteLine("[]");
  408. }
  409. else
  410. {
  411. Console.WriteLine("[" + string.Join(", ", result) + "]");
  412. }
  413. }
  414. }
  415. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement