Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.IO;
- using System.Text;
- namespace lab
- {
- public class Sportsmen
- {
- public string name;
- public double rezult;
- public int group;
- public int rzr;
- public Sportsmen(string a, double g, int h, int o)
- {
- name = a;
- rezult=g;
- group = h;
- rzr = o;
- }
- }
- class MainClass
- {
- delegate int x(double aw, double [] bw);
- public static int StringAnalysis(string a)
- {
- int r = 0;
- int h = 0;
- int f = 0;
- while (r < a.Length)
- {
- if (Char.IsDigit(a[r]))
- {
- h++;
- }
- if (a[r] == ' ')
- {
- f = r;
- }
- r++;
- }
- int j = int.Parse(a.Substring(f + 1));
- return j;
- }
- public static int Raz(double a, double[] b)
- {
- int i = 0;
- for (int h = 0; h < b.Length; h++)
- {
- if (a <= b[h])
- {
- i = h + 1;
- break;
- }
- }
- if (i == 0)
- {
- i = b.Length;
- }
- return i;
- }
- public static Sportsmen ResAnalysis(string a, int j, int z, double [] o)
- {
- x rad;
- int r = 0;
- int h = 0;
- int f = 0;
- int prov = 0;
- string name = "";
- Sportsmen b = new Sportsmen ("a", 0,0,0);
- while (r < a.Length)
- {
- if (prov != 1 && a[r] == '_')
- {
- name = a.Substring(0, r);
- prov = 1;
- }
- if (a[r] == ' ')
- {
- f = r;
- r++;
- while (r < a.Length)
- {
- if (Char.IsDigit(a[r]))
- {
- h++;
- r++;
- }
- else
- {
- break;
- }
- }
- double rezo = double.Parse(a.Substring(f+1));
- rad = Raz;
- int t = rad(rezo, o);
- b = new Sportsmen(name, rezo, z, t);
- }
- r++;
- }
- return b;
- }
- public static void q(Sportsmen[] j, int ox, int s)
- {
- for (int t = s; t < s + ox; t++)
- {
- double max = j[t].rezult;
- int id = t;
- for (int v = t + 1; v < s + ox; v++)
- {
- if (j[v].rezult < max)
- {
- max = j[v].rezult;
- id = v;
- }
- }
- Sportsmen z;
- z = j[id];
- j[id] = j[t];
- j[t] = z;
- }
- }
- public static void w(Sportsmen[] j, Sportsmen[] v, int y, int s, int l)
- {
- int u = 0;
- string c = "Процесс";
- int t = y;
- for (int i = y; i < y + s + l; i++)
- {
- if (j[t].rezult <= j[y + s + u].rezult)
- {
- while (j[t].rezult <= j[y + s + u].rezult)
- {
- v[i] = j[t];
- i++;
- t++;
- if (t >= y + s)
- {
- for (int h = y + s + u; h < y + s + l; h++)
- {
- v[i] = j[h];
- i++;
- }
- c = "Стоп";
- break;
- }
- }
- }
- if (c == "Стоп")
- {
- break;
- }
- if (j[t].rezult > j[y + s + u].rezult)
- {
- while (j[y + s + u].rezult <= j[t].rezult)
- {
- v[i] = j[y + s + u];
- i++;
- u++;
- if (y + s + u >= y + s + l)
- {
- for (int h = t; h < y + s; h++)
- {
- v[i] = j[h];
- i++;
- }
- c = "Стоп";
- break;
- }
- }
- }
- if (c == "Стоп")
- {
- break;
- }
- if (j[t].rezult < j[y + s + u].rezult && u > 0)
- {
- i--;
- }
- }
- }
- public static void Main(string[] args)
- {
- string pa = @"/Users/mlmisha/Desktop/temp1.txt";
- StreamReader s = new StreamReader(pa);
- string l = s.ReadLine();
- int ych = StringAnalysis(l);
- Console.WriteLine("Участников: {0}", ych);
- Sportsmen[] m = new Sportsmen[ych];
- l = s.ReadLine();
- int gr = StringAnalysis(l);
- int o = 0;
- int[] g = new int[gr];
- Console.WriteLine("Групп {0}", gr);
- for (int t = 0; t < 3; t++)
- {
- l = s.ReadLine();
- }
- g[o] = StringAnalysis(l);
- l = s.ReadLine();
- int p = 0;
- Console.WriteLine("Суть задания в том, что за каждым спортсменом закрепляется еще и разряд, который зависит, соответсвенно, от полученного результата");
- Console.WriteLine("Сколько всего разрядов?");
- int vb = int.Parse(Console.ReadLine());
- double[] rz = new double[vb];
- for (int i = 0; i < vb; i++)
- {
- Console.WriteLine("Введите нижнюю границу {0} разряда (<= чем...)", i + 1);
- rz[i] = double.Parse(Console.ReadLine());
- if (i == 0)
- {
- if (rz[i] <= 0)
- {
- while (rz[i] <= 0)
- {
- Console.WriteLine("Время отрицательным быть не может, мистер фантаст, давайте-ка побольше, у нас тут физкультура, а не физика");
- rz[i] = double.Parse(Console.ReadLine());
- }
- }
- }
- if (i > 0)
- {
- if (rz[i] < rz[i - 1])
- {
- while (rz[i] < 0 || rz[i] < rz[i - 1])
- {
- Console.WriteLine("Слишком мало, прибавьте");
- rz[i] = double.Parse(Console.ReadLine());
- }
- }
- }
- }
- int otvet = 1;
- if (gr > 2)
- {
- Console.WriteLine("К сожалению, на данный момент искусственный интеллект не способен совершать такие операции");
- Console.WriteLine("Общая таблица выведена не будет, но групповые можно");
- Console.WriteLine("Можно вывести, в целом, но с болшой нагрузкой");
- Console.WriteLine("Вывести?");
- Console.WriteLine("1.Да 2.Нет 3.Нагрузка");
- otvet = int.Parse(Console.ReadLine());
- if (otvet < 1 || otvet > 3)
- {
- while (otvet < 1 || otvet > 3)
- {
- Console.WriteLine("Что вы имеете ввиду?");
- otvet = int.Parse(Console.ReadLine());
- }
- }
- Console.WriteLine("Хорошо");
- }
- if (otvet == 1 || otvet == 3)
- {
- for (int u = 0; u < gr; u++)
- {
- for (int t = 0; t < g[u]; t++)
- {
- l = s.ReadLine();
- m[p]=ResAnalysis(l, p, u + 1, rz);
- p++;
- }
- if (u < gr - 1)
- {
- for (int y = 0; y < 3; y++)
- {
- l = s.ReadLine();
- }
- o++;
- g[o] = StringAnalysis(l);
- l = s.ReadLine();
- }
- }
- Console.WriteLine("Участники");
- for (int t = 0; t < ych; t++)
- {
- Console.WriteLine("{0}. {1} {2} {3} {4}", t + 1, m[t].name, m[t].rezult, m[t].group, m[t].rzr);
- }
- }
- int z = 0;
- for (int t = 0; t < gr; t++)
- {
- q(m, g[t], z);
- z = z + g[t];
- }
- Console.WriteLine("Групповые результаты");
- int e = 1;
- while (e <= gr)
- {
- Console.WriteLine("\t\tГруппа {0}", e);
- for (int b = 0; b < ych; b++)
- {
- if (m[b].group == e)
- {
- Console.WriteLine("{0} {1} {2}", m[b].name, m[b].rezult, m[b].rzr);
- }
- }
- Console.WriteLine();
- e++;
- }
- int a = gr;
- int r = 0;
- int x = 0;
- Sportsmen[] v = new Sportsmen[ych];
- if (otvet != 3)
- {
- while (a >= 1)
- {
- if (a % 2 == 0)
- {
- a /= 2;
- for (int t = 0; t < a; t++)
- {
- for (int i = 0; i < ych; i++)
- {
- Console.WriteLine("{0}. {1} {2}", i + 1, m[i].name, m[i].rezult);
- }
- w(m, v, x, g[r], g[r+1]);
- x += g[r] + g[r + 1];
- r += 2;
- }
- }
- else
- {
- if (a == 1)
- {
- break;
- }
- }
- }
- }
- if (otvet == 3)
- {
- q(m, ych, 0);
- Console.WriteLine("\t\t\t Финальная таблица");
- Console.WriteLine("Фамилия Результат Разряд");
- for (int c = 0; c <ych; c++)
- {
- Console.WriteLine("{0} \t {1} {2}", m[c].name, m[c].rezult, m[c].rzr);
- }
- }
- if (otvet != 3)
- {
- Console.WriteLine("\t\t\t Финальная таблица");
- Console.WriteLine("Фамилия Результат Разряд");
- for (int c = 0; c < ych; c++)
- {
- Console.WriteLine("{0} \t {1} {2}", v[c].name, v[c].rezult, v[c].rzr);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement