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 Lab.rab._4
- {
- class Program
- {
- static void Main()
- {
- int[] mas = new int[1]; bool ok; int menu1 = -1, menu2 = -1;
- Console.ForegroundColor = ConsoleColor.Cyan;
- Console.WriteLine("> Работа с массивом <");
- Console.ResetColor();
- int size = SizeMas();
- MenuInput();
- do
- {
- try
- {
- Console.Write("> ");
- menu1 = Convert.ToInt32(Console.ReadLine());
- ok = true; if ((menu1 !=1)&&(menu1!=2)) { ok = false; Console.WriteLine("Error! \n"); };
- }
- catch (FormatException)
- {
- Console.WriteLine("Error!"); ok = false;
- }
- } while (!ok);
- switch(menu1)
- {
- case 1: mas = RandomMas(size); break;
- case 2: mas = KeyMas(size); break;
- };
- Print(mas);
- do
- {
- Menu();
- do
- {
- try
- {
- Console.Write("> ");
- menu2 = Convert.ToInt32(Console.ReadLine());
- ok = true; if ((menu2 <= 0) && (menu2 >= 8)) { ok = false; Console.WriteLine("Error! \n"); };
- }
- catch (FormatException)
- {
- Console.WriteLine("Error!"); ok = false;
- }
- } while (!ok);
- switch(menu2)
- {
- case 1:
- if (CheckMas(size) == true) { Console.WriteLine("Пустой массив. \nСгенерируйте новый массив. Введите MasNew=1 "); NewMas(); Main(); }
- else { mas = DelMinEl(ref size, mas); Print(mas); }; break;
- case 2: mas = AddElInMas(ref size, mas); Console.WriteLine(); Print(mas); break;
- case 3: mas = ChangeElMas(size, mas); Console.WriteLine(); Print(mas); break;
- case 4: mas = FindElMas(size, mas); Console.WriteLine(); Print(mas); break;
- case 5: mas = SortMas(size, mas); Console.WriteLine(); Print(mas); break;
- case 6: mas = FindInSortMas(size, mas); Console.WriteLine(); Print(mas); break;
- }
- } while (menu2 != 7);
- Console.ForegroundColor = ConsoleColor.Cyan;
- Console.WriteLine("\n> Работа с массивом завершена <\n");
- Console.ResetColor();
- Console.ReadKey();
- }
- static int [] RandomMas(int size)
- {
- int[] randmas = new int[size];
- Random rnd = new Random();
- for (int i = 0; i < size; i++)
- randmas[i] = rnd.Next(0, 100);
- return randmas;
- }
- static int [] KeyMas(int size)
- {
- int elkeymas = 0; bool ok;
- int[] keymas = new int[size];
- for (int i = 0; i < size; i++)
- {
- do
- {
- try
- {
- Console.Write("Элемен массива= ");
- elkeymas = Int32.Parse(Console.ReadLine());
- ok = true;
- if (elkeymas < 0) { ok = false; Console.WriteLine("error!!! \n"); };
- }
- catch (FormatException)
- {
- Console.WriteLine("error!!! \n"); ok = false;
- }
- } while (!ok);
- keymas[i] = elkeymas;
- }
- return keymas;
- }
- static int SizeMas()
- {
- int size = 0; bool ok;
- do
- {
- try
- {
- Console.Write("\nВведите количество элементов в массиве = ");
- size = Convert.ToInt32(Console.ReadLine());
- ok = true;
- if (size <= 0) { ok = false; Console.WriteLine("Error! \n"); };
- }
- catch (FormatException)
- {
- Console.WriteLine("Error!"); ok = false;
- }
- } while (!ok);
- return size;
- }
- static void Print(int [] mas)
- {
- foreach(int X in mas) Console.Write(X+" ");
- }
- static void MenuInput()
- {
- Console.WriteLine("\n> Ввод массива: \n 1. Рандомно \n 2. С клавиатуры");
- }
- static void Menu()
- {
- Console.Write("\n\n> Выберите действие:"
- +"\n 1. Удалить минимальный элемент "
- +"\n 2. Добавить N элементов, начиная после k номера "
- +"\n 3. Поменять местами элементы с четными и нечетными индексами"
- +"\n 4. Найти элемент с заданным значением \n 5. Сортировать массив (простой выбор) "
- +"\n 6. Найти элемент в отсортированном(!!!) массиве \n 7. Выход \n");
- }
- static int [] DelMinEl(ref int size, int [] mas)
- {
- if (size == 1) { Console.WriteLine("Массив состоит из единственного элемента, удаление которого приведет к пустому массиву"); return mas; };
- int min = 0, min_k = 0; int j, k1;
- for (int k = 0; k <= size - 1; k++)
- {
- 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; };
- if (mas[k] < min) { min = mas[k]; min_k = k; };
- }
- Console.WriteLine("Минимальный элемент {0} находится на {1}-й позиции", min, (min_k + 1));
- int[] mas_new = new int[size - 1];
- for (j = 0, k1 = 0; j < min_k; j++, k1++)
- mas_new[j] = mas[k1];
- for (; j < size - 1; j++, k1++)
- mas_new[j] = mas[k1 + 1];
- size--;
- return mas_new;
- }
- static int [] AddElInMas(ref int size, int [] mas)
- {
- bool ok; int N=0 , k=-1; int a, b, c;
- do
- {
- try
- {
- Console.Write("N = ");
- N = Convert.ToInt32(Console.ReadLine());
- ok = true; if (N <= 0) { ok = false; Console.WriteLine("Error! \n"); };
- }
- catch (FormatException)
- {
- Console.WriteLine("Error!"); ok = false;
- }
- } while (!ok);
- do
- {
- try
- {
- Console.Write("k = ");
- k = Convert.ToInt32(Console.ReadLine());
- ok = true;
- if ((k > size)||(k<0)) { ok = false; Console.WriteLine("Error! \n"); };
- }
- catch (FormatException)
- {
- Console.WriteLine("Error!"); ok = false;
- }
- } while (!ok);
- int[] mas1 = new int[size + N]; int add = 0;
- Console.WriteLine("\n> Добавить элементы: \n 1. Рандомно \n 2. С клавиатуры ");
- do
- {
- try
- {
- Console.Write("> ");
- add = Convert.ToInt32(Console.ReadLine());
- ok = true; if ((add!=1)&&(add!=2)) { ok = false; Console.WriteLine("Error! \n"); };
- }
- catch (FormatException)
- {
- Console.WriteLine("Error!"); ok = false;
- }
- } while (!ok);
- switch(add)
- {
- case 1:
- {
- for (a = 0, b = 0; a < k ; a++, b++)
- mas1[b] = mas[a];
- Random rnd = new Random();
- for (c = 1; c <= N; c++, b++)
- mas1[b] = rnd.Next(0, 100);
- for (; b < size + N; a++, b++)
- mas1[b] = mas[a];
- }
- break;
- case 2:
- {
- int elkeymas = 0;
- for (a = 0, b = 0; a < k - 1; a++, b++)
- mas1[b] = mas[a];
- for (c = 1; c <= N; c++, b++)
- {
- do
- {
- try
- {
- Console.Write("Элемен массива= ");
- elkeymas = Int32.Parse(Console.ReadLine());
- ok = true;
- if (elkeymas < 0) { ok = false; Console.WriteLine("error!!! \n"); };
- }
- catch (FormatException)
- {
- Console.WriteLine("error!!! \n"); ok = false;
- }
- } while (!ok);
- mas1[c] = elkeymas;
- }
- for (; b < size + N; a++, b++)
- mas1[b] = mas[a];
- break;
- }
- }
- size = size + N;
- return mas1;
- }
- static int[] ChangeElMas(int size, int[] mas)
- {
- for (int w = 0; w < size - 1; w += 2)
- {
- int temp1 = mas[w];
- mas[w] = mas[w + 1];
- mas[w + 1] = temp1;
- }
- return mas;
- }
- static int [] FindElMas(int size, int [] mas)
- {
- int findout = 0; bool ok;int index = -1; int i;
- do
- {
- try
- {
- Console.Write("Найти элемент = ");
- findout = Convert.ToInt32(Console.ReadLine());
- ok = true; if (findout < 0) { ok = false; Console.WriteLine("Error! \n"); };
- }
- catch (FormatException)
- {
- Console.WriteLine("Error!"); ok = false;
- }
- } while (!ok);
- for (i = 0; i < size; i++)
- if (mas[i] == findout) { index = i; break; }
- if (index < 0) Console.WriteLine("Ваш элемент не найден");
- else { Console.WriteLine("Ваш элемент находится на позиции " + (index + 1)); Console.WriteLine("Произведено сравнений = " + i); };
- return mas;
- }
- static int [] SortMas(int size, int [] mas)
- {
- for (int z = 0; z < size - 1; z++)
- {
- int min = z;
- for (int g = z + 1; g < size; g++)
- {
- if (mas[g] < mas[min]) min = g;
- }
- int temp = mas[z];
- mas[z] = mas[min];
- mas[min] = temp;
- }
- return mas;
- }
- static int [] FindInSortMas(int size, int [] mas)
- {
- int left = 0; int right = size - 1; int ser = 0; int M = 0; int findin = 0; bool ok;
- do
- {
- try
- {
- Console.Write("Найти элемент = ");
- findin = Convert.ToInt32(Console.ReadLine());
- ok = true; if (findin < 0) { ok = false; Console.WriteLine("Error! \n"); };
- }
- catch (FormatException)
- {
- Console.WriteLine("Error!"); ok = false;
- }
- } while (!ok);
- do
- {
- M++;
- } while ((Math.Pow(2, M)) < size);
- do
- {
- ser = (left + right) / 2;
- if (mas[ser] < findin) left = ser + 1; else right = ser;
- } while (left != right);
- if (mas[left] == findin) { Console.WriteLine("Элемент {0} находится на {1}-й позиции ", findin, (left + 1)); Console.WriteLine("Произведено сравнений = " + M);}
- else Console.WriteLine("Ваш элемент не найден");
- return mas;
- }
- static bool CheckMas( int size )
- {
- if (size == 1) return true; else return false;
- }
- static int NewMas()
- {
- int nm = 0; bool ok;
- do
- {
- try
- {
- Console.Write("\nNewMas = ");
- nm = Convert.ToInt32(Console.ReadLine());
- ok = true;
- if (nm != 1) { ok = false; Console.WriteLine("Error! \n"); };
- }
- catch (FormatException)
- {
- Console.WriteLine("Error!"); ok = false;
- }
- } while (!ok);
- return nm;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement