Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.58 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3.  
  4. namespace EKZtest
  5. {
  6.     class Program
  7.     {
  8.         static Random rand = new Random();
  9.         static void Main(string[] args)
  10.         {
  11.             do
  12.             {
  13.                 try
  14.                 {
  15.                     int N = rand.Next(10, 51); // размерность массива
  16.                     int[] basket = new int[N];
  17.                     int count;
  18.                     string path = @"..\..\..\basket2.txt";
  19.                     File.WriteAllText(path, ""); // создание пустого файла
  20.                     //заполнение массива и вывод на экран, в файл
  21.                     for (int i = 0; i < N; i++)
  22.                     {
  23.                         basket[i] = rand.Next(50, 1001);
  24.                         Console.Write(basket[i] + " ");
  25.                         File.AppendAllText(path, basket[i] + " ");
  26.  
  27.                     }
  28.                     // вызов метода Sum и заполнение файла
  29.                     int S = Sum(basket);
  30.                     Console.WriteLine(Environment.NewLine + "Сумма элементов = " + S);
  31.                     File.AppendAllText(path, Environment.NewLine + S);
  32.                     // Проверка и вызов метода Return и заполнение файла
  33.                     if (S > 10000)
  34.                     {
  35.                         int R = Return(basket, out count);
  36.                         Console.WriteLine($"Сумма = {R}, Кол-во элементов = {count}");
  37.                         File.AppendAllText(path, Environment.NewLine + $"Сумма = {R}, Кол-во элементов = {count}");
  38.  
  39.                         // Проверка и вызов метода Add и заполнение файла
  40.                         if (S < 5000)
  41.                         {
  42.                             string array = "";
  43.                             int A = Add(ref basket, out count);
  44.                             Console.WriteLine($"Сумма = {A}, Кол-во элементов = {count}");
  45.                             File.AppendAllText(path, Environment.NewLine + $"Сумма = {A}, Кол-во элементов = {count}");
  46.                             // Новый массив
  47.                             for (int i = 0; i < basket.Length; i++)
  48.                             {
  49.                                 Console.Write(basket[i] + " ");
  50.                                 array = array + basket[i] + " ";
  51.                             }
  52.                             File.AppendAllText(path, Environment.NewLine + array);
  53.                         }
  54.                     }
  55.                 }
  56.                 catch (Exception ex)
  57.                 {
  58.                     Console.WriteLine("Ошибка вида: " + ex.Message);
  59.                 }
  60.                 Console.WriteLine("Для выхода нажмите Escape");
  61.             } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
  62.         }
  63.         /// <summary>
  64.         /// Нахождение суммы элементов массива
  65.         /// </summary>
  66.         /// <param name="basket">массив</param>
  67.         /// <returns>Сумма элементов</returns>
  68.         public static int Sum(int[] basket)
  69.         {
  70.             int basketSUM = 0;
  71.             for (int i = 0; i < basket.Length; i++)
  72.                 basketSUM += basket[i];
  73.             return basketSUM;
  74.  
  75.         }
  76.         /// <summary>
  77.         /// Если сумма элементов > 10000 минисмальные элементы обнуляются и в счетчик записывается необходимое кол-во обнулений. Возвращается сумма элементов до обнуления
  78.         /// </summary>
  79.         /// <param name="basket">массив</param>
  80.         /// <param name="count">Кол-во обнулений элеентов</param>
  81.         /// <returns>Сумма элементов до обнуления</returns>
  82.         public static int Return(int[] basket, out int count)
  83.         {
  84.             int returnPRICE = 0;
  85.             count = 0;
  86.  
  87.             int TOTALreturn = Sum(basket);
  88.  
  89.             while (TOTALreturn > 10000)
  90.             {
  91.                 int min = 1001;
  92.                 int index = 0;// индекс обнуленного элемента
  93.                 try
  94.                 {
  95.                     for (int i = 0; i < basket.Length; i++)
  96.                     {
  97.                         if (basket[i] < min && basket[i] != 0)
  98.                         {
  99.                             min = basket[i];
  100.                             index = i;
  101.                         }
  102.                     }
  103.                 }
  104.                 catch (Exception ex)
  105.                 {
  106.                     Console.WriteLine("Ошибка вида: " + ex.Message);
  107.                 }
  108.                 count++;
  109.                 returnPRICE += min;
  110.                 TOTALreturn -= min;
  111.                 basket[index] = 0; // обнуление
  112.             }
  113.             return returnPRICE;
  114.         }
  115.         /// <summary>
  116.         /// Если сумма элементов < 5000 в массив записывается новый элемент и увеличивается счетчик
  117.         /// </summary>
  118.         /// <param name="basket">массив</param>
  119.         /// <param name="count">кол-во добавленных элементов</param>
  120.         /// <returns>сумма добавленных элементов</returns>
  121.         public static int Add(ref int[] basket, out int count)
  122.         {
  123.             int addPRICE = 0;
  124.             count = 0;
  125.             int TOTALadd = Sum(basket);
  126.             try
  127.             {
  128.                 while (TOTALadd < 5000)
  129.                 {
  130.  
  131.                     Array.Resize(ref basket, basket.Length + 1);// добавление нового элемента
  132.                     basket[basket.Length - 1] = rand.Next(100, 301);
  133.                     addPRICE += basket[basket.Length - 1];
  134.                     TOTALadd += basket[basket.Length - 1];
  135.                     count++;
  136.                 }
  137.             }
  138.             catch (Exception ex)
  139.             {
  140.                 Console.WriteLine("Ошибка вида: " + ex.Message);
  141.             }
  142.             return addPRICE;
  143.         }
  144.     }
  145. }
  146. /*
  147.  * Запись в файл можно осуществить только одним методом File.WriteAllText() предварительно все входные данные записать в отдельную строку
  148.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement