Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace lab
- {
- class p
- {
- public int gr;
- public string f;
- public double r;
- }
- class Razr : p
- {
- public int z;
- public Razr(int u, string h, double y, int c)
- {
- gr = u;
- f = h;
- r = y;
- z = c;
- }
- }
- class MainClass
- {
- public static void q(Razr[] j, int ox, int s)
- {
- for (int t = s; t < s + ox; t++)
- {
- double max = j[t].r;
- int id = t;
- for (int v = t + 1; v < s + ox; v++)
- {
- if (j[v].r < max)
- {
- max = j[v].r;
- id = v;
- }
- }
- Razr z;
- z = j[id];
- j[id] = j[t];
- j[t] = z;
- }
- }
- public static void w(Razr [] j, Razr [] 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].r <= j[y + s + u].r)
- {
- while (j[t].r <= j[y + s + u].r)
- {
- 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 (j[t].r > j[y + s + u].r && t > y)
- {
- i--;
- }
- if (c == "Стоп")
- {
- break;
- }
- if (j[t].r > j[y + s + u].r)
- {
- while (j[y + s + u].r <= j[t].r)
- {
- 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].r < j[y + s + u].r && u > 0)
- {
- i--;
- }
- }
- }
- public static void Main(string[] args)
- {
- Console.WriteLine("Суть задания в том, что за каждым спортсменом закрепляется еще и разряд, который зависит, соответсвенно, от полученного результата");
- int razrad = 0;
- 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());
- }
- }
- }
- }
- Console.WriteLine("Сколько человек участвует в забеге?");
- Console.Write("УЧАСТНИКОВ: ");
- int g = int.Parse(Console.ReadLine());
- if (g <= 1)
- {
- while (g <= 1)
- {
- Console.WriteLine("Как-то маловато, давайте еще кого-то");
- Console.Write("УЧАСТНИКОВ: ");
- g = int.Parse(Console.ReadLine());
- }
- }
- Console.WriteLine("Сколько групп в забеге?");
- Console.Write("ГРУПП: ");
- int d = int.Parse(Console.ReadLine());
- if (d <= 1)
- {
- while (d <= 1)
- {
- Console.WriteLine("Как-то маловато, поделите их");
- Console.Write("ГРУПП: ");
- d = int.Parse(Console.ReadLine());
- }
- }
- if (g / d < 1)
- {
- while (g / d < 1)
- {
- Console.WriteLine("Человек не хватит");
- Console.WriteLine("ГРУПП: ");
- d = int.Parse(Console.ReadLine());
- }
- }
- int otvet = 1;
- if (d > 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)
- {
- int[] index = new int[d];
- Console.WriteLine("Внос данных об участниках");
- Razr[] m = new Razr[g];
- int i = 0;
- int f = g;
- int l = 0;
- while (i < g)
- {
- for (int o = 0; o < d; o++)
- {
- if (o != d - 1)
- {
- Console.WriteLine("Человек в {0} группе: ", o + 1);
- l = int.Parse(Console.ReadLine());
- if (d == 2)
- {
- if (l >= f)
- {
- Console.WriteLine("Слишком много");
- while (l >= f)
- {
- Console.WriteLine("ЧЕЛОВЕК В ГРУППЕ: ");
- l = int.Parse(Console.ReadLine());
- }
- }
- }
- else
- {
- if (l >= f || (d - (o + 1)) / (f - l) < 1)
- {
- Console.WriteLine("Слишком много");
- while (l >= f || (d - (o + 1)) / (f - l) < 1)
- {
- Console.WriteLine("ЧЕЛОВЕК В ГРУППЕ: ");
- l = int.Parse(Console.ReadLine());
- }
- }
- }
- if (l <= 0)
- {
- while (l <= 0)
- {
- Console.WriteLine("Слишком мало");
- l = int.Parse(Console.ReadLine());
- }
- }
- f -= l;
- index[o] = l;
- }
- else
- {
- l = f;
- index[o] = l;
- }
- Console.WriteLine("Группа {0}", o + 1);
- for (int b = 0; b < l; b++)
- {
- Console.Write("ФАМИЛИЯ: ");
- string c = Console.ReadLine();
- Console.Write("РЕЗУЛЬТАТ: ");
- double u = double.Parse(Console.ReadLine());
- if (u < 0)
- {
- while (u < 0)
- {
- Console.WriteLine("Такого быть не может, ошибочка");
- Console.Write("РЕЗУЛЬТАТ: ");
- u = double.Parse(Console.ReadLine());
- }
- }
- for (int j = 0; j < vb; j++)
- {
- if (u <= rz[j])
- {
- razrad = j + 1;
- break;
- }
- if (u >= rz[vb - 1])
- {
- razrad = vb;
- break;
- }
- }
- m[i] = new Razr(o + 1, c, u, razrad);
- i++;
- }
- }
- }
- int z = 0;
- for (int t = 0; t < d; t++)
- {
- q(m, index[t], z);
- z = z + index[t];
- }
- Console.WriteLine("Групповые результаты");
- int e = 1;
- while (e <= d)
- {
- Console.WriteLine("\t\tГруппа {0}", e);
- for (int b = 0; b < g; b++)
- {
- if (m[b].gr == e)
- {
- Console.WriteLine("{0} {1} {2}", m[b].f, m[b].r, m[b].z);
- }
- }
- Console.WriteLine();
- e++;
- }
- int a = d;
- int r = 0;
- int x = 0;
- Razr[] v = new Razr[g];
- if (otvet != 3)
- {
- while (a >= 1)
- {
- if (a % 2 == 0)
- {
- a /= 2;
- for (int t = 0; t < a; t++)
- {
- w(m, v, x, index[r], index[r + 1]);
- x += index[r] + index[r + 1];
- r += 2;
- }
- }
- else
- {
- if (a == 1)
- {
- break;
- }
- }
- }
- }
- if (otvet == 3)
- {
- q(m, g, 0);
- Console.WriteLine("\t\t\t Финальная таблица");
- Console.WriteLine("Фамилия Результат Разряд");
- for (int c = 0; c < g; c++)
- {
- Console.WriteLine("{0} \t {1} {2}", m[c].f, m[c].r, m[c].z);
- }
- }
- if (otvet != 3)
- {
- Console.WriteLine("\t\t\t Финальная таблица");
- Console.WriteLine("Фамилия Результат Разряд");
- for (int c = 0; c < g; c++)
- {
- Console.WriteLine("{0} \t {1} {2}", v[c].f, v[c].r, v[c].z);
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement