Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace LAB4
- {
- class Program
- {
- static int ArraySizeInput(out int size)
- {
- bool OK;
- do
- {
- Console.WriteLine("Введите количество элементов массива: ");
- OK = Int32.TryParse(Console.ReadLine(), out size);
- if ((!OK) || (size <= 0))
- {
- Console.WriteLine("Невозможно создать такой массив! Количество элементов может быть только натуральным числом");
- }
- } while ((!OK) || (size <= 0));
- return size;
- }
- static int WOGOArray(out int num)
- {
- bool OK;
- do
- {
- Console.WriteLine("Выберите способ задания массива: ");
- Console.WriteLine("1. Задать массив с помощью датчика случайных чисел");
- Console.WriteLine("2. Задать массив c клавиатуры");
- OK = Int32.TryParse(Console.ReadLine(), out num);
- if ((!OK) || (num > 2) || (num <= 0))
- {
- Console.WriteLine("Ошибка ввода. Введите число 1 или 2");
- }
- } while ((!OK) || (num > 2) || (num <= 0));
- return num;
- }
- static int[] RandomGenOfArray(int size)
- {
- int[] arr = new int[size];
- Random rand = new Random();
- for (int i = 0; i < size; i++)
- {
- arr[i] = rand.Next(-100, 100);
- }
- return arr;
- }
- static int[] ManualGenOfArray(int size)
- {
- int j = 0;
- bool OK;
- int[] arr = new int[size];
- for (int i = 0; i < size; i++)
- {
- do
- {
- Console.WriteLine("Введите элемент массива № {0} ", i + 1);
- OK = int.TryParse(Console.ReadLine(), out arr[i]);
- if (arr[i] == 0) j++;
- if (j == size)
- {
- Console.WriteLine("Внимание!\nВы создали нулевой массив");
- }
- if (!OK)
- {
- Console.WriteLine("Ошибка ввода. Повторите ввод");
- }
- } while (!OK);
- }
- return arr;
- }
- static void Printout(int size, int[] arr)
- {
- for (int i = 0; i < size; i++)
- Console.Write(arr[i] + " ");
- Console.WriteLine();
- }
- static int GetOption(out int answer)
- {
- bool OK;
- do
- {
- Console.WriteLine("Введите: ");
- OK = Int32.TryParse(Console.ReadLine(), out answer);
- if ((!OK) | (answer < 0) | (answer > 7))
- {
- Console.WriteLine("Ошибка. Повторите ввод. Необходимо ввести число от 1 до 7 для того, чтобы выбрать, что сделать с массивом.");
- }
- } while ((!OK) || (answer < 0) || (answer > 7));
- return answer;
- }
- static void Del(ref int size, ref int[] arr)
- {
- int j = 0;
- for (int i = 0; i < size; i++)
- {
- if (arr[i] % 2 == 0)
- {
- j++;
- }
- }
- int k = 0;
- int[] arrN = new int[size - j];
- for(int i = 0; i < size; i++)
- {
- if (arr[i] % 2 != 0)
- {
- arrN[k] = arr[i];
- k++;
- }
- }
- size -= j;
- arr = arrN;
- Console.WriteLine();
- arr = arrN;
- }
- static int KInput(int size)
- {
- int k;
- bool OK;
- do
- {
- Console.WriteLine("Введите число k, чтобы добавить k элементов в массив");
- OK = Int32.TryParse(Console.ReadLine(), out k);
- if ((!OK) || (k < 0))
- {
- Console.WriteLine("Ошибка! Введите натуральное число.");
- }
- } while ((!OK) || (k < 0));
- return k;
- }
- static int[] ArrExtend(int size, int[] arr, int k)
- {
- bool OK;
- int[] arrK = new int[size + k];
- for (int i = size-1; i >= 0; i--)
- {
- arrK[i+k] = arr[i];
- }
- for (int i = 0; i < k; i++)
- {
- do
- {
- Console.WriteLine("Введите элемент массива № {0} ", i + 1);
- OK = int.TryParse(Console.ReadLine(), out arrK[i]);
- if (!OK)
- {
- Console.WriteLine("Ошибка! Введите целое число.");
- }
- } while (!OK);
- }
- return arrK;
- }
- static int[] EOSort(int size, int[] arr)
- {
- int[] arrK = new int [size];
- int j = 0;
- for (int i = 0; i < size - 1; i ++)
- {
- if (arr[i] % 2 == 0)
- {
- arrK[j] = arr[i];
- j++;
- }
- }
- for (int i = 0; i < size - 1; i ++)
- {
- if (arr[i] % 2 != 0)
- {
- arrK[j] = arr[i];
- j++;
- }
- }
- return arrK;
- }
- static void EvenSearch(int size, int[] arr)
- {
- int j = 0;
- for (int i = 0; i < size; i++)
- {
- if (arr[i] % 2 == 0)
- {
- Console.WriteLine("Первый чётный элемент - это элемент № {0}: {1}", i + 1, arr[i]);
- break;
- }
- else j++;
- if (j == size)
- {
- Console.WriteLine("В массиве нет чётных элементов.");
- }
- }
- }
- static int[] SortArray(int size, int[] arr)
- {
- int min, n_min, j;
- for (int i = 0; i < size; i++)
- {
- min = arr[i]; n_min = i;
- for(j = i + 1; j < size; j++)
- if(arr[j] < min)
- {
- min = arr[j];
- n_min = j;
- }
- arr[n_min] = arr[i];
- arr[i] = min;
- }
- return arr;
- }
- static void BinarySearch(int size, int[] arr, int NumberForFind)
- {
- bool OK;
- do
- {
- Console.WriteLine("Введите элемент массива, который необходимо найти: ");
- OK = Int32.TryParse(Console.ReadLine(), out NumberForFind);
- if (!OK)
- {
- Console.WriteLine("Ошибка! Введите целое число.");
- }
- } while (!OK);
- int left = 1, right = size - 1, sred;
- do
- {
- sred = (left + right) / 2;
- arr = SortArray(size, arr);
- if (arr[sred] < NumberForFind)
- {
- left = sred + 1;
- }
- else
- {
- right = sred;
- }
- } while (left != right);
- if (arr[left] == NumberForFind)
- {
- Console.WriteLine("Искомый элемент: {0}, это элемент массива № {1}", NumberForFind, left + 1);
- }
- else
- {
- Console.ForegroundColor = ConsoleColor.Red;
- Console.WriteLine("Элемент не найден");
- Console.ResetColor();
- }
- }
- public static void Main(string[] args)
- {
- int size, answer1, answer2, k, NumberForFind = 0;
- size = ArraySizeInput(out size);
- int[] arr = new int[size];
- answer1 = WOGOArray(out int num);
- switch (answer1)
- {
- case 1:
- {
- arr = RandomGenOfArray(size);
- break;
- }
- case 2:
- {
- arr = ManualGenOfArray(size);
- break;
- }
- }
- Console.WriteLine();
- Printout(size, arr);
- do
- {
- Console.WriteLine("Действия с массивом:");
- Console.WriteLine("1. Удаление всех чётных элементов.");
- Console.WriteLine("2. Добавление К элементов в начало массива.");
- Console.WriteLine("3. Перемещение чётных элементов в начало, а нечётных – в конец массива.");
- Console.WriteLine("4. Нахождение первого чётного элемента.");
- Console.WriteLine("5. Сортировка методом простого выбора.");
- Console.WriteLine("6. Поиск.");
- Console.WriteLine("7. Выход");
- answer2 = GetOption(out int answer);
- switch (answer2)
- {
- case 1:
- {
- Del(ref size, ref arr);
- break;
- }
- case 2:
- {
- k = KInput(size);
- arr = ArrExtend(size, arr, k);
- size = size + k;
- break;
- }
- case 3:
- {
- arr = EOSort(size, arr);
- break;
- }
- case 4:
- {
- EvenSearch(size, arr);
- break;
- }
- case 5:
- {
- arr = SortArray(size, arr);
- break;
- }
- case 6:
- {
- BinarySearch(size, arr, NumberForFind);
- break;
- }
- case 7:
- {
- Console.WriteLine("Выйти из программы");
- continue;
- }
- }
- Console.WriteLine();
- Printout(size, arr);
- Console.WriteLine();
- } while (answer2 != 7);
- Console.ReadKey();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement