Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2010, 05:19   #1
Loka
Пользователь
 
Регистрация: 02.12.2010
Сообщений: 15
Восклицание откомментировать программы

не понимаю что где происходит в этих прогах
они все по графам
откомментируйте хотя бы одну,очень прошу

1. дан файл,содержащий матрицу смежности графа G=(V,E),|V|=n,|E|=m.Написать прогу,которая позволит определить, ориент-й граф или нет,а также выяснить, сколько в данном графе маршрутов заданной(пользователем) длины k из вершины v(i) в вершину v(j) (i,j=1,2,...,n, i!=j) и определить есть ли контуры в ориент-м графе, проходящих через вершину v(j) (i=1,2,...,n).

код программы:
Код:
class Program
    {
        static void Main(string[] args)
        {
            int count = 0;
            string path = @".\matr.txt";
           

            using (StreamReader sr = File.OpenText(path))
            {


                string input;
                while ((input = sr.ReadLine()) != null)
                {
                    count++;
                }
            }
            using (StreamReader sr = File.OpenText(path))
            {
                int i = 0, j = 0;
                string[] strsplit = new string[count];
                string[] str = new string[count];
                int[,] matr = new int[count, count];
                int[,] tempmatr = new int[count, count];
                int[,] tempmatr1 = new int[count, count];
                int[,] summatr = new int[count, count];
                string input;
                while ((input = sr.ReadLine()) != null)
                {
                    while (j < count)
                    {
                        str[i] = input;
                        strsplit = str[i].Split(' ');
                        matr[i, j] = Convert.ToInt32(strsplit[j]);
                        tempmatr[i, j] = Convert.ToInt32(strsplit[j]);
                        summatr[i, j] = Convert.ToInt32(strsplit[j]);
                        j++;
                    }
                    i++;
                    j = 0;
                }
                Console.WriteLine("Исходная матрица смежности");
                for (i = 0; i < count; i++)
                {
                    for (j = 0; j < count; j++)
                    {
                        Console.Write(matr[i, j] + " ");
                    }
                    Console.WriteLine();
                }
                Console.Write("Введите Vi:  ");
                int Vi = Convert.ToInt32(Console.ReadLine());
                //way
                int l = 1, sum = 0, n = 0;
                while (l < count)
                {

                    for (i = 0; i < count; i++)
                    {
                        n = 0;
                        while (n < count)
                        {
                            for (j = 0; j < count; j++)
                            {
                                sum += tempmatr[i, j] * matr[j, n];

                            }
                            if (sum != 0)
                            {
                                tempmatr1[i, n] = 1;
                            }
                            sum = 0;
                            n++;
                        }
                    }
                    for (i = 0; i < count; i++)
                        for (j = 0; j < count; j++)
                        {
                            if (tempmatr1[i, j] != 0)
                            {
                                summatr[i, j] += 1;
                            }
                        }
                    for (i = 0; i < count; i++)
                        for (j = 0; j < count; j++)
                        {
                            tempmatr[i, j] = tempmatr1[i, j];
                            tempmatr1[i, j] = 0;
                        }
                    l++;
                }
                for (i = 0; i < count; i++)
                {
                    for (j = 0; j < count; j++)
                    {
                        Console.Write(summatr[i, j] + " ");
                    }
                    Console.WriteLine();
                }

                if (summatr[Vi - 1, Vi - 1] != 0)
                {
                    Console.WriteLine("Есть контур, проходящий через вершину " + Vi);
                }
                else
                    Console.WriteLine("Нет контура, проходящего через вершину " + Vi);
            }
        }
    }

Последний раз редактировалось Stilet; 09.12.2010 в 08:25.
Loka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Узнать название exe файла программы из самой программы Crystallon Общие вопросы Delphi 9 09.09.2010 16:22
программы валеха Компьютерное железо 1 08.08.2010 12:31
Из программы 1.exe создаем пустой файл 2.exe. Как из программы 1 внести API функции в программу 2? X-LEV-X Общие вопросы Delphi 7 09.03.2010 08:33
3 программы на c++ nosoroog Помощь студентам 2 24.10.2009 16:33
Запуск программы на выполнение из другой программы. ViNcHeStEr Паскаль, Turbo Pascal, PascalABC.NET 6 18.06.2008 14:33