Advertisement
mlmisha

9.4.4

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