Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- namespace EKZtest
- {
- class Program
- {
- static Random rand = new Random();
- static void Main(string[] args)
- {
- do
- {
- try
- {
- int N = rand.Next(10, 51); // размерность массива
- int[] basket = new int[N];
- int count;
- string path = @"..\..\..\basket2.txt";
- File.WriteAllText(path, ""); // создание пустого файла
- //заполнение массива и вывод на экран, в файл
- for (int i = 0; i < N; i++)
- {
- basket[i] = rand.Next(50, 1001);
- Console.Write(basket[i] + " ");
- File.AppendAllText(path, basket[i] + " ");
- }
- // вызов метода Sum и заполнение файла
- int S = Sum(basket);
- Console.WriteLine(Environment.NewLine + "Сумма элементов = " + S);
- File.AppendAllText(path, Environment.NewLine + S);
- // Проверка и вызов метода Return и заполнение файла
- if (S > 10000)
- {
- int R = Return(basket, out count);
- Console.WriteLine($"Сумма = {R}, Кол-во элементов = {count}");
- File.AppendAllText(path, Environment.NewLine + $"Сумма = {R}, Кол-во элементов = {count}");
- // Проверка и вызов метода Add и заполнение файла
- if (S < 5000)
- {
- string array = "";
- int A = Add(ref basket, out count);
- Console.WriteLine($"Сумма = {A}, Кол-во элементов = {count}");
- File.AppendAllText(path, Environment.NewLine + $"Сумма = {A}, Кол-во элементов = {count}");
- // Новый массив
- for (int i = 0; i < basket.Length; i++)
- {
- Console.Write(basket[i] + " ");
- array = array + basket[i] + " ";
- }
- File.AppendAllText(path, Environment.NewLine + array);
- }
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine("Ошибка вида: " + ex.Message);
- }
- Console.WriteLine("Для выхода нажмите Escape");
- } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
- }
- /// <summary>
- /// Нахождение суммы элементов массива
- /// </summary>
- /// <param name="basket">массив</param>
- /// <returns>Сумма элементов</returns>
- public static int Sum(int[] basket)
- {
- int basketSUM = 0;
- for (int i = 0; i < basket.Length; i++)
- basketSUM += basket[i];
- return basketSUM;
- }
- /// <summary>
- /// Если сумма элементов > 10000 минисмальные элементы обнуляются и в счетчик записывается необходимое кол-во обнулений. Возвращается сумма элементов до обнуления
- /// </summary>
- /// <param name="basket">массив</param>
- /// <param name="count">Кол-во обнулений элеентов</param>
- /// <returns>Сумма элементов до обнуления</returns>
- public static int Return(int[] basket, out int count)
- {
- int returnPRICE = 0;
- count = 0;
- int TOTALreturn = Sum(basket);
- while (TOTALreturn > 10000)
- {
- int min = 1001;
- int index = 0;// индекс обнуленного элемента
- try
- {
- for (int i = 0; i < basket.Length; i++)
- {
- if (basket[i] < min && basket[i] != 0)
- {
- min = basket[i];
- index = i;
- }
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine("Ошибка вида: " + ex.Message);
- }
- count++;
- returnPRICE += min;
- TOTALreturn -= min;
- basket[index] = 0; // обнуление
- }
- return returnPRICE;
- }
- /// <summary>
- /// Если сумма элементов < 5000 в массив записывается новый элемент и увеличивается счетчик
- /// </summary>
- /// <param name="basket">массив</param>
- /// <param name="count">кол-во добавленных элементов</param>
- /// <returns>сумма добавленных элементов</returns>
- public static int Add(ref int[] basket, out int count)
- {
- int addPRICE = 0;
- count = 0;
- int TOTALadd = Sum(basket);
- try
- {
- while (TOTALadd < 5000)
- {
- Array.Resize(ref basket, basket.Length + 1);// добавление нового элемента
- basket[basket.Length - 1] = rand.Next(100, 301);
- addPRICE += basket[basket.Length - 1];
- TOTALadd += basket[basket.Length - 1];
- count++;
- }
- }
- catch (Exception ex)
- {
- Console.WriteLine("Ошибка вида: " + ex.Message);
- }
- return addPRICE;
- }
- }
- }
- /*
- * Запись в файл можно осуществить только одним методом File.WriteAllText() предварительно все входные данные записать в отдельную строку
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement