Advertisement
mlmisha

1-04

Mar 31st, 2020
179
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 8.47 KB | None | 0 0
  1. using System;
  2. namespace lab
  3. {
  4.     class p
  5.     {
  6.         public int gr;
  7.         public string f;
  8.         public double r;
  9.     }
  10.     class Razr : p
  11.     {
  12.         public int z;
  13.         public Razr(int u, string h, double y, int c)
  14.         {
  15.             gr = u;
  16.             f = h;
  17.             r = y;
  18.             z = c;
  19.         }
  20.     }
  21.     class MainClass
  22.     {
  23.  
  24.         public static void q(Razr[] j, int ox, int s)
  25.         {
  26.             for (int t = s; t < s + ox; t++)
  27.             {
  28.                 double max = j[t].r;
  29.                 int id = t;
  30.                 for (int v = t + 1; v < s + ox; v++)
  31.                 {
  32.                     if (j[v].r < max)
  33.                     {
  34.                         max = j[v].r;
  35.                         id = v;
  36.                     }
  37.                 }
  38.                 Razr z;
  39.                 z = j[id];
  40.                 j[id] = j[t];
  41.                 j[t] = z;
  42.             }
  43.         }
  44.         public static void w(Razr [] j, Razr [] v, int y, int s, int l)
  45.         {
  46.             int u = 0;
  47.             string c = "Процесс";
  48.             int t = y;
  49.             for (int i = y; i < y + s + l; i++)
  50.             {
  51.                 if (j[t].r <= j[y + s + u].r)
  52.                 {
  53.                     while (j[t].r <= j[y + s + u].r)
  54.                     {
  55.                         v[i] = j[t];
  56.                         i++;
  57.                         t++;
  58.                         if (t >= y + s)
  59.                         {
  60.                             for (int h = y + s + u; h < y + s + l; h++)
  61.                             {
  62.                                 v[i] = j[h];
  63.                                 i++;
  64.                             }
  65.                             c = "Стоп";
  66.                             break;
  67.                         }
  68.                     }
  69.                 }
  70.                 if (j[t].r > j[y + s + u].r && t > y)
  71.                 {
  72.                     i--;
  73.                 }
  74.                 if (c == "Стоп")
  75.                 {
  76.                     break;
  77.                 }
  78.                 if (j[t].r > j[y + s + u].r)
  79.                 {
  80.                     while (j[y + s + u].r <= j[t].r)
  81.                     {
  82.                         v[i] = j[y + s + u];
  83.                         i++;
  84.                         u++;
  85.                         if (y + s + u >= y + s + l)
  86.                         {
  87.                             for (int h = t; h < y + s; h++)
  88.                             {
  89.                                 v[i] = j[h];
  90.                                 i++;
  91.                             }
  92.                             c = "Стоп";
  93.                             break;
  94.                         }
  95.                     }
  96.                 }
  97.                 if (c == "Стоп")
  98.                 {
  99.                     break;
  100.                 }
  101.                 if (j[t].r < j[y + s + u].r && u > 0)
  102.                 {
  103.                     i--;
  104.                 }
  105.             }
  106.         }
  107.         public static void Main(string[] args)
  108.         {
  109.             Console.WriteLine("Суть задания в том, что за каждым спортсменом закрепляется еще и разряд, который зависит, соответсвенно, от полученного результата");
  110.             int razrad = 0;
  111.             Console.WriteLine("Сколько всего разрядов?");
  112.             int vb = int.Parse(Console.ReadLine());
  113.             double[] rz = new double[vb];
  114.             for (int i = 0; i < vb; i++)
  115.             {
  116.                 Console.WriteLine("Введите нижнюю границу {0} разряда (<= чем...)", i + 1);
  117.                 rz[i] = double.Parse(Console.ReadLine());
  118.  
  119.                 if (i == 0)
  120.                 {
  121.                     if (rz[i] <= 0)
  122.                     {
  123.                         while (rz[i] <= 0)
  124.                         {
  125.                             Console.WriteLine("Время отрицательным быть не может, мистер фантаст, давайте-ка побольше, у нас тут физкультура, а не физика");
  126.                             rz[i] = double.Parse(Console.ReadLine());
  127.                         }
  128.                     }
  129.                 }
  130.                 if (i > 0)
  131.                 {
  132.                     if (rz[i] < rz[i - 1])
  133.                     {
  134.                         while (rz[i] < 0 || rz[i] < rz[i - 1])
  135.                         {
  136.                             Console.WriteLine("Слишком мало, прибавьте");
  137.                             rz[i] = double.Parse(Console.ReadLine());
  138.                         }
  139.                     }
  140.                 }
  141.             }
  142.             Console.WriteLine("Сколько человек участвует в забеге?");
  143.             Console.Write("УЧАСТНИКОВ: ");
  144.             int g = int.Parse(Console.ReadLine());
  145.             if (g <= 1)
  146.             {
  147.                 while (g <= 1)
  148.                 {
  149.                     Console.WriteLine("Как-то маловато, давайте еще кого-то");
  150.                     Console.Write("УЧАСТНИКОВ: ");
  151.                     g = int.Parse(Console.ReadLine());
  152.                 }
  153.             }
  154.             Console.WriteLine("Сколько групп в забеге?");
  155.             Console.Write("ГРУПП: ");
  156.             int d = int.Parse(Console.ReadLine());
  157.             if (d <= 1)
  158.             {
  159.                 while (d <= 1)
  160.                 {
  161.                     Console.WriteLine("Как-то маловато, поделите их");
  162.                     Console.Write("ГРУПП: ");
  163.                     d = int.Parse(Console.ReadLine());
  164.                 }
  165.             }
  166.             if (g / d < 1)
  167.             {
  168.                 while (g / d < 1)
  169.                 {
  170.                     Console.WriteLine("Человек не хватит");
  171.                     Console.WriteLine("ГРУПП: ");
  172.                     d = int.Parse(Console.ReadLine());
  173.                 }
  174.             }
  175.             int otvet = 1;
  176.             if (d > 2)
  177.             {
  178.                 Console.WriteLine("К сожалению, на данный момент искусственный интеллект не способен совершать такие операции");
  179.                 Console.WriteLine("Общая таблица выведена не будет, но групповые можно");
  180.                 Console.WriteLine("Можно вывести, в целом, но с болшой нагрузкой");
  181.                 Console.WriteLine("Вывести?");
  182.                 Console.WriteLine("1.Да  2.Нет 3.Нагрузка");
  183.                 otvet = int.Parse(Console.ReadLine());
  184.                 if (otvet < 1 || otvet > 3)
  185.                 {
  186.                     while (otvet < 1 || otvet > 3)
  187.                     {
  188.                         Console.WriteLine("Что вы имеете ввиду?");
  189.                         otvet = int.Parse(Console.ReadLine());
  190.                     }
  191.                 }
  192.                 Console.WriteLine("Хорошо");
  193.             }
  194.             if (otvet == 1 || otvet == 3)
  195.             {
  196.                 int[] index = new int[d];
  197.                 Console.WriteLine("Внос данных об участниках");
  198.                 Razr[] m = new Razr[g];
  199.                 int i = 0;
  200.                 int f = g;
  201.                 int l = 0;
  202.                 while (i < g)
  203.                 {
  204.                     for (int o = 0; o < d; o++)
  205.                     {
  206.                         if (o != d - 1)
  207.                         {
  208.                             Console.WriteLine("Человек в {0} группе: ", o + 1);
  209.                             l = int.Parse(Console.ReadLine());
  210.                             if (d == 2)
  211.                             {
  212.                                 if (l >= f)
  213.                                 {
  214.                                     Console.WriteLine("Слишком много");
  215.                                     while (l >= f)
  216.                                     {
  217.                                         Console.WriteLine("ЧЕЛОВЕК В ГРУППЕ: ");
  218.                                         l = int.Parse(Console.ReadLine());
  219.                                     }
  220.                                 }
  221.                             }
  222.                             else
  223.                             {
  224.                                 if (l >= f || (d - (o + 1)) / (f - l) < 1)
  225.                                 {
  226.                                     Console.WriteLine("Слишком много");
  227.                                     while (l >= f || (d - (o + 1)) / (f - l) < 1)
  228.                                     {
  229.                                         Console.WriteLine("ЧЕЛОВЕК В ГРУППЕ: ");
  230.                                         l = int.Parse(Console.ReadLine());
  231.                                     }
  232.                                 }
  233.                             }
  234.                             if (l <= 0)
  235.                             {
  236.                                 while (l <= 0)
  237.                                 {
  238.                                     Console.WriteLine("Слишком мало");
  239.                                     l = int.Parse(Console.ReadLine());
  240.                                 }
  241.                             }
  242.                             f -= l;
  243.                             index[o] = l;
  244.                         }
  245.                         else
  246.                         {
  247.                             l = f;
  248.                             index[o] = l;
  249.                         }
  250.                         Console.WriteLine("Группа {0}", o + 1);
  251.                         for (int b = 0; b < l; b++)
  252.                         {
  253.                             Console.Write("ФАМИЛИЯ: ");
  254.                             string c = Console.ReadLine();
  255.                             Console.Write("РЕЗУЛЬТАТ: ");
  256.                             double u = double.Parse(Console.ReadLine());
  257.                             if (u < 0)
  258.                             {
  259.                                 while (u < 0)
  260.                                 {
  261.                                     Console.WriteLine("Такого быть не может, ошибочка");
  262.                                     Console.Write("РЕЗУЛЬТАТ: ");
  263.                                     u = double.Parse(Console.ReadLine());
  264.                                 }
  265.                             }
  266.                             for (int j = 0; j < vb; j++)
  267.                             {
  268.                                 if (u <= rz[j])
  269.                                 {
  270.                                     razrad = j + 1;
  271.                                     break;
  272.                                 }
  273.                                 if (u >= rz[vb - 1])
  274.                                 {
  275.                                     razrad = vb;
  276.                                     break;
  277.                                 }
  278.                             }
  279.                             m[i] = new Razr(o + 1, c, u, razrad);
  280.                             i++;
  281.                         }
  282.                     }
  283.                 }
  284.                 int z = 0;
  285.                 for (int t = 0; t < d; t++)
  286.                 {
  287.  
  288.                     q(m, index[t], z);
  289.                     z = z + index[t];
  290.                 }
  291.                 Console.WriteLine("Групповые результаты");
  292.                 int e = 1;
  293.                 while (e <= d)
  294.                 {
  295.                     Console.WriteLine("\t\tГруппа {0}", e);
  296.                     for (int b = 0; b < g; b++)
  297.                     {
  298.                         if (m[b].gr == e)
  299.                         {
  300.                             Console.WriteLine("{0} {1} {2}", m[b].f, m[b].r, m[b].z);
  301.                         }
  302.                     }
  303.                     Console.WriteLine();
  304.                     e++;
  305.                 }
  306.                 int a = d;
  307.                 int r = 0;
  308.                 int x = 0;
  309.                 Razr[] v = new Razr[g];
  310.                 if (otvet != 3)
  311.                 {
  312.                     while (a >= 1)
  313.                     {
  314.                         if (a % 2 == 0)
  315.                         {
  316.                             a /= 2;
  317.                             for (int t = 0; t < a; t++)
  318.                             {
  319.  
  320.                                 w(m, v, x, index[r], index[r + 1]);
  321.                                 x += index[r] + index[r + 1];
  322.                                 r += 2;
  323.                             }
  324.                         }
  325.                         else
  326.                         {
  327.                             if (a == 1)
  328.                             {
  329.                                 break;
  330.                             }
  331.                         }
  332.                     }
  333.                 }
  334.                 if (otvet == 3)
  335.                 {
  336.  
  337.                     q(m, g, 0);
  338.                     Console.WriteLine("\t\t\t Финальная таблица");
  339.                     Console.WriteLine("Фамилия Результат  Разряд");
  340.                     for (int c = 0; c < g; c++)
  341.                     {
  342.                         Console.WriteLine("{0} \t {1} {2}", m[c].f, m[c].r, m[c].z);
  343.                     }
  344.                 }
  345.                 if (otvet != 3)
  346.                 {
  347.                     Console.WriteLine("\t\t\t Финальная таблица");
  348.                     Console.WriteLine("Фамилия Результат  Разряд");
  349.                     for (int c = 0; c < g; c++)
  350.                     {
  351.                         Console.WriteLine("{0} \t {1} {2}", v[c].f, v[c].r, v[c].z);
  352.                     }
  353.                 }
  354.             }
  355.         }
  356.     }
  357. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement