Beispiel #1
0
        public static int cmp(Duga t1, Duga t2)  // функция сравнения для структуры
        {
            int result = t1.v1.CompareTo(t2.v1); // вначале сравниваются слова

            if (result != 0)
            {
                return(result);
            }
            return(t1.v2.CompareTo(t2.v2));// затем номера файлов
        }
Beispiel #2
0
        static void Main(string[] args)
        {
            System.Threading.Thread.CurrentThread.CurrentCulture =
                new System.Globalization.CultureInfo("en-US");         // без этого получаются запятые вместо точек.
            Console.Title           = "Работа с файлами и сортировка"; // заголовок для консоли
            Console.BackgroundColor = ConsoleColor.DarkYellow;         // цвет фона консоли
            Console.ForegroundColor = ConsoleColor.Red;                // цвет символов консоли
            Console.Clear();                                           // Очистка поля консоли
            Random      gen = new Random();
            List <Duga> Li = new List <Duga>();                        // создается объект Li типа List для формирования списка структур OutItem
            Duga        ll, ll1;                                       // одиночная структура
            int         i1, i2, n, mr, ii;
            bool        flag;

            Console.WriteLine("введите число вершин и число ребер графа");
            n  = int.Parse(Console.ReadLine());
            mr = int.Parse(Console.ReadLine());
            for (int i = 0; i < mr; i++)
            {
                while (true)
                {
                    i1   = gen.Next(1, n + 1);
                    i2   = gen.Next(1, n + 1);
                    flag = true;
                    if (i1 == i2)
                    {
                        flag = false;
                    }
                    for (ii = 0; ii < Li.Count; ii++)
                    {
                        if (i1 == Li[ii].v1 && i2 == Li[ii].v2)
                        {
                            flag = false;
                        }
                    }
                    if (flag)
                    {
                        break;
                    }
                }

                ll  = new Duga(i1, i2);
                ll1 = new Duga(i2, i1);
                Li.Add(ll);
                Li.Add(ll1);
            }
            ll = new Duga(n + 1, -1);
            Li.Add(ll);
            Li.Sort(cmp);
            for (int i = 0; i < Li.Count; i++)
            {
                Console.WriteLine(" номер  {0:} ребро {1:} {2:} ", i, Li[i].v1, Li[i].v2);
            }
            int[] ukaz = new int[n + 2];
            int   step = 0, previ = 1;

            ukaz[1] = 0;
            while (step < Li.Count)
            {
                if (Li[step].v1 != previ)
                {
                    previ++;
                    ukaz[previ] = step;
                }
                else
                {
                    step++;
                }
            }
            ukaz[n + 1] = Li.Count - 1;
            for (int i = 1; i <= n + 1; i++)
            {
                Console.WriteLine(" указатель {0:} {1:} ", i, ukaz[i]);
            }
            for (int i = 1; i <= n; i++)
            {
                Console.WriteLine();
                for (int j = ukaz[i]; j < ukaz[i + 1]; j++)
                {
                    Console.WriteLine(" ребро {0:} {1:} {2:} ", j, Li[j].v1, Li[j].v2);
                }
            }

            Console.WriteLine("введите бони клайд суши в 3 строки");
            int bon   = int.Parse(Console.ReadLine());
            int klaid = int.Parse(Console.ReadLine());
            int Suchi = int.Parse(Console.ReadLine());

            for (int Scan = 1; Scan < n + 1; Scan++)
            {
                if (Scan != bon && Scan != klaid && Scan != Suchi)
                {
                    FindWay(Li, ukaz, bon, Suchi, Scan, n);

                    Console.WriteLine("Путь " + Scan);
                }
                else
                {
                    continue;
                }
            }

            Console.WriteLine("Нажми любую клавишу.");
            Console.ReadKey();// приостановка закрытия окна консоли
        }