Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/34: Рейтинг темы: голосов - 34, средняя оценка - 4.82
V_panike

Программа определения критического пути

16.06.2009, 18:53. Показов 6664. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
программа определения критического пути

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
void Critical_Path (int n, int i[], int j[], int dij[],
               int *s1, int *s2, int *f1, int *f2, int *tf, int *ff)
{
  int k,index,max,min;
  int ti[20],te[20];
 
  index = 0;
  for (k=0;k<n;k++)
  {
    if ( i[k]==index+1 )  index = i[k];
    ti[k] = 0; te[k] = 9999;
  }
  for (k=0;k<n;k++)
  {
    max = ti[i[k]] + dij[k];
    if ( ti[j[k]]<max ) ti[j[k]] = max;
  }
  te[j[n-1]] = ti[j[n-1]];
  for (k=n-1;k>=0;k--)
  {
    min = te[j[k]] - dij[k];
    if ( te[i[k]]>min ) te[i[k]] = min;
  }
  for (k=0;k<n;k++)
  {
    s1[k] = ti[i[k]]; f1[k] = s1[k] + dij[k];
    f2[k] = te[j[k]]; s2[k] = f2[k] - dij[k];
    tf[k] = f2[k] - f1[k]; ff[k] = ti[j[k]] - f1[k];
  }
}
 
void main()
{
  int n;      // Общее количество работ по проекту          
              // (количество ребер ориентированного графа).
  int i[20];  // Вектор-пара, представляющая k-ю работу,    
  int j[20];  // которая понимается как стрелка, связыва-   
              // ющая событие i[k] с событием j[k]          
              // Граф задан массивом ребер:                 
              // (i[0],j[0]),(i[1],j[1]),...,(i[n-1],j[n-1])    
              // Должно быть выполнено:  
              // i[0]=1, i[k]<i[k+1], i[k]<j[k].
  int dij[20];// dij[k] - продолжительность k-й операции.
  int s1[20]; // s1[k] - самый ранний срок начала k-й операции.
  int s2[20]; // s2[k] - самый поздний срок начала k-й.
  int f1[20]; // f1[k] - самый ранний срок завершения k-й.
  int f2[20]; // f2[k] - самый поздний срок завершения k-й операции.
  int tf[20]; // tf[k] - полный резерв времени k-й операции.
  int ff[20]; // ff[k] - свободный резерв времени k-й операции.
  int k;      // Параметр цикла.
 
  cout << "Введите общее количество работ по проекту: ";
  cin >> n;
  for (k=0;k<n;k++)
  {
     cout << "Вводите начало, конец дуги и продолжительность: ";
     cin >> i[k] >> j[k] >> dij[k];
  }
  Critical_Path (n,&i[0],&j[0],&dij[0],&s1[0],&s2[0],&f1[0],&f2[0],&tf[0],&ff[0]);
  //Вывод результатов.
  cout << "Самый ранний срок начала     : ";
  for (k=0;k<n;k++) cout << s1[k] << " "; cout << endl;
  cout << "Самый поздний срок начала    : ";
  for (k=0;k<n;k++) cout << s2[k] << " "; cout << endl;
  cout << "Самый ранний срок завершения : ";
  for (k=0;k<n;k++) cout << f1[k] << " "; cout << endl;
  cout << "Самый поздний срок завершения : ";
  for (k=0;k<n;k++) cout << f2[k] << " "; cout << endl;
  cout << "Свободный резерв времени     : ";
  for (k=0;k<n;k++) cout << ff[k] << " "; cout << endl;
  cout << "Полный резерв времени        : ";
  for (k=0;k<n;k++) cout << tf[k] << " "; cout << endl;
  // Определение  критического  пути. Критический путь задается 
  // стрелками, соединяющими события, для которых полный резерв
  // времени равен нулю.
  cout << "Критический путь: " << 1 << " ";
  for (k=0;k<n;k++)
   if ( tf[k]==0 ) cout << j[k] << " ";
}
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.06.2009, 18:53
Ответы с готовыми решениями:

Нахождение критического пути
Всем добрый день! Необходимо написать код критического пути исходя из того, что критический путь - это самый длинный путь проекта. ...

Нахождение критического пути
Написать и отладить программу нахождения критического пути для заданной модели-решетки:

Нахождение критического пути
Есть орграф. Что нужно изменить в методе Дейкстры для того, чтобы искать путь не наименьшей,а наибольшей длины? Если просто сменить все...

3
 Аватар для exe-dealer
308 / 161 / 11
Регистрация: 07.06.2009
Сообщений: 538
16.06.2009, 20:34
там пара минут же. это всмысле за деньги?

Добавлено через 12 минут 14 секунд
попробуй
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
using System;
using System.Collections.Generic;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            int n;      // Общее количество работ по проекту          
            // (количество ребер ориентированного графа).
            int[] i = new int[20];  // Вектор-пара, представляющая k-ю работу,    
            int[] j = new int[20];  // которая понимается как стрелка, связыва-   
            // ющая событие i[k] с событием j[k]          
            // Граф задан массивом ребер:                 
            // (i[0],j[0]),(i[1],j[1]),...,(i[n-1],j[n-1])    
            // Должно быть выполнено:  
            // i[0]=1, i[k]<i[k+1], i[k]<j[k].
            int[] dij = new int[20];// dij[k] - продолжительность k-й операции.
            int[] s1 = new int[20]; // s1[k] - самый ранний срок начала k-й операции.
            int[] s2 = new int[20]; // s2[k] - самый поздний срок начала k-й.
            int[] f1 = new int[20]; // f1[k] - самый ранний срок завершения k-й.
            int[] f2 = new int[20]; // f2[k] - самый поздний срок завершения k-й операции.
            int[] tf = new int[20]; // tf[k] - полный резерв времени k-й операции.
            int[] ff = new int[20]; // ff[k] - свободный резерв времени k-й операции.
            int k;      // Параметр цикла.
 
            Console.Write("Введите общее количество работ по проекту: ");
            n = int.Parse(Console.ReadLine());
            for (k = 0; k < n; k++)
            {
                Console.Write("Вводите начало, конец дуги и продолжительность: \n");
                i[k] = int.Parse(Console.ReadLine());
                j[k] = int.Parse(Console.ReadLine());
                dij[k] = int.Parse(Console.ReadLine());
            }
            Critical_Path(n, i, j, dij, s1, s2, f1, f2, tf, ff);
            //Вывод результатов.
            Console.Write("Самый ранний срок начала     : ");
            for (k = 0; k < n; k++) Console.Write("{0} \n", s1[k]);
            Console.Write("Самый поздний срок начала    : ");
            for (k = 0; k < n; k++) Console.Write("{0} \n", s2[k]);
            Console.Write("Самый ранний срок завершения : ");
            for (k = 0; k < n; k++) Console.Write("{0} \n", f1[k]);
            Console.Write("Самый поздний срок завершения : ");
            for (k = 0; k < n; k++) Console.Write("{0} \n", f2[k]);
            Console.Write("Свободный резерв времени     : ");
            for (k = 0; k < n; k++) Console.Write("{0} \n", ff[k]);
            Console.Write("Полный резерв времени        : ");
            for (k = 0; k < n; k++) Console.Write("{0} \n", tf[k]);
            // Определение  критического  пути. Критический путь задается 
            // стрелками, соединяющими события, для которых полный резерв
            // времени равен нулю.
            Console.Write("Критический путь: 1 ");
            for (k = 0; k < n; k++)
                if (tf[k] == 0) Console.Write("{0} ", j[k]);
        }
 
 
 
        public static void Critical_Path(int n, int[] i, int[] j, int[] dij,
                        int[] s1, int[] s2, int[] f1, int[] f2, int[] tf, int[] ff)
        {
            int k, index, max, min;
            int[] ti = new int[20];
            int[] te = new int[20];
 
            index = 0;
            for (k = 0; k < n; k++)
            {
                if (i[k] == index + 1) index = i[k];
                ti[k] = 0; te[k] = 9999;
            }
 
            for (k = 0; k < n; k++)
            {
                max = ti[i[k]] + dij[k];
                if (ti[j[k]] < max) ti[j[k]] = max;
            }
 
            te[j[n - 1]] = ti[j[n - 1]];
            for (k = n - 1; k >= 0; k--)
            {
                min = te[j[k]] - dij[k];
                if (te[i[k]] > min) te[i[k]] = min;
            }
 
            for (k = 0; k < n; k++)
            {
                s1[k] = ti[i[k]]; f1[k] = s1[k] + dij[k];
                f2[k] = te[j[k]]; s2[k] = f2[k] - dij[k];
                tf[k] = f2[k] - f1[k]; ff[k] = ti[j[k]] - f1[k];
            }
        }
    }
}
5
0 / 0 / 1
Регистрация: 07.10.2013
Сообщений: 52
12.05.2014, 08:36
exe-dealer, Здравствуйте, а можете прислать сам проект? не получается запустить
0
0 / 0 / 0
Регистрация: 12.12.2017
Сообщений: 1
12.12.2017, 02:30
Привет,а можете прислать сам проект?
Цитата Сообщение от SamLokers Посмотреть сообщение
exe-dealer
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.12.2017, 02:30
Помогаю со студенческими работами здесь

Нахождение критического пути
Здравствуйте, нужно написать программу по нахождению критического пути графа. Данные берутся с сайта http://www.om-db.wi.tum.de/psplib/. Не...

Алгоритм нахождения критического пути
Для нахождения критического пути служит алгоритм: 1) Эйлера 2) Гамильтона 3) Краскала 4) Дейкстры

Поиск критического пути. Задачи сетевого планирования.
Привет всем! В качестве курсового проекта по предмету моделирование мне была дана тема Поиск критического пути. В общем имеется таблица со...

Создание программы для нахождения критического пути графа
Здравствуйте, в универе задали задачу написать программу, реализующую алгоритм нахождения критического пути на графе. Данные берутся с...

Метод трапеций для определения пути
Вот написал прогу, а правильно ли не знаю, проверьте пожалуйста) Решил методом трапеций) Обьект движется по прямой со скоростью...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru