Esempio n. 1
0
 static bool CheckPassed(Rebro[] a, Rebro b)
 {
     for (int i = 0; i < a.Length; i++)
     {
         if ((b.From == a[i].From && b.To == a[i].To) || (b.To == a[i].From && b.From == a[i].To))
         {
             return(false);
         }
     }
     return(true);
 }
Esempio n. 2
0
        public void CreateArray()
        {
            bool ok = false;

            do
            {
                try
                {
                    mas = new Rebro[size];
                    bool probel = false;
                    for (int i = 0; i < size; i++)
                    {
                        string vector = Console.ReadLine();
                        string from   = "";
                        string to     = "";
                        for (int j = 0; j < vector.Length; j++)
                        {
                            if (vector[j] == ' ')
                            {
                                probel = true;
                            }
                            if (!probel)
                            {
                                from += vector[j];
                            }
                            else if (vector[j] != ' ')
                            {
                                to += vector[j];
                            }
                        }
                        mas[i] = new Rebro(from, to);
                        probel = false;
                        ok     = true;
                    }
                }
                catch (Exception)
                {
                    Console.WriteLine("Ошибка ввода, введите все заново");
                }
            } while (!ok);
        }
Esempio n. 3
0
        static bool CheckRebro(Rebro current, RebroArray mas)
        {
            Rebro[] passed = new Rebro[mas.size];
            for (int i = 0; i < mas.size; i++)
            {
                passed[i] = new Rebro();
            }

            int passedCounter = 1;

            passed[0] = current;
            bool ok = true;

            while (ok)
            {
                for (int i = 0; i < mas.size; i++)
                {
                    if ((current.To == mas[i].To && CheckPassed(passed, mas[i])) || (current.To == mas[i].From && CheckPassed(passed, mas[i])))
                    {
                        if (mas[i].From == passed[0].From || mas[i].To == passed[0].From)
                        {
                            return(false);
                        }
                        else
                        {
                            ok = false;
                        }

                        string a, b;
                        if (mas[i].From == current.To)
                        {
                            a = mas[i].From;
                            b = mas[i].To;
                        }
                        else
                        {
                            a = mas[i].To;
                            b = mas[i].From;
                        }
                        current = new Rebro(a, b);
                        passed[passedCounter] = current;
                        passedCounter++;
                        i = -1;
                    }
                    else
                    {
                        ok = false;
                    }
                }
                if (!ok)
                {
                    for (int i = passedCounter - 1; i >= 0; i--)
                    {
                        if (i == 0)
                        {
                            ok = false;
                            break;
                        }

                        Rebro chosen = new Rebro();
                        for (int j = 0; j < mas.size; j++)
                        {
                            if ((mas[j].To == passed[i].To && CheckPassed(passed, mas[j])) || mas[j].From == passed[i].From && CheckPassed(passed, mas[j]) ||
                                (mas[j].From == passed[i].To && CheckPassed(passed, mas[j])) || mas[j].To == passed[i].From && CheckPassed(passed, mas[j]))
                            {
                                current = passed[i - 1];
                                ok      = true;
                                break;
                            }
                        }
                        if (ok)
                        {
                            break;
                        }
                    }
                }
            }
            return(true);
        }