Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
programmmistka
0 / 0 / 0
Регистрация: 15.11.2016
Сообщений: 20
1

Алгоритм Флойда С++ реализация

26.11.2016, 19:15. Просмотров 1075. Ответов 1
Метки нет (Все метки)

Есть такой код класса
Помогите, пожалуйста найти по методу Флойда самый короткий путь, он описан в void setstructGraf, но не могу разобраться что нужно указывать вместо a[i][j].
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
#include <iostream>
using namespace std;
 
class Rebra // ребра
{
    int start; //начало
    int end;//конец
public:
    void init(int a,int b) { start=a; end=b;}; //инициализация
    void pr() { cout<<start<<" "<<end;}; //ввод 
};
//************************************************************************************************
class FGraf{ //граф
    int kolv; //кол-во вершин
    int kolr; //кол-во ребер 
    Rebra* g; //объявление класса ребер
public: 
    void Enter(){ //запрос данных
    cout <<"Кол. вершин >> "; 
    std::cin>> kolv;
    cout<<"Кол. ребер >> "; 
    std::cin>> kolr;
    }
    void setstructGraf(){ //структура графа
        int a=101,b=101;
        g =new Rebra [kolr];//выделение динамической памяти
        for (int i=0; i<kolr; i++) //цикл выводит ребра по вершинам (1 ребро: а=1, b=2 и тд.)
       {
            std::cin>>a>>b;
            g[i].init(a,b);
        }
        for (int k=1;k<=kolr;k++)
        for (int i=1;i<=kolr;i++)
        for (int j=1;j<=kolr;j++)
        a[i][j] = min (a[i][j], a[i][j]+a[k][j]);
        for (int i=1;i<=kolr;i++)
    {
      for (int j=1;j<=kolr;j++)
      cout << a[i][j] << " ";
      cout << '\n';
    }
    }
 
    void pr(){ //вывод результата графа
        for (int i=0; i<kolr; i++)
       {
           std::cout<<"Ребор № "<<i<<"->>>> ";
            g[i].pr();
            cout << endl;
        }
    }
};
Добавлено через 13 минут
Может надо добавить динамической памяти после?
Цитата Сообщение от programmmistka Посмотреть сообщение
g =new Rebra [kolr];//выделение динамической памяти
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.11.2016, 19:15
Ответы с готовыми решениями:

Алгоритм Флойда - Уоршелла
не получается реализовать алгоритм Флойда-Уоршелла, вроде все должнен выводить, а выводит или нули...

Алгоритм Флойда–Уоршелла
for (int k=0; k&lt;n; k++) for (int i=0; i&lt;n; i++) for (int j=0; j&lt;n; j++)как сделать так,...

Алгоритм Флойда-Уоршела
Ребят, помогите. На завтра нужно сдать алгоритм флойда. Вроде нашел код, но он не выводит САМО...

Алгоритм Флойда Оршала
Найти наикратчайшее расстояние от каждой до каждой. Задание представляет собой любую матрицу 4*4....

Алгоритм Флойда (теория графов)
код: int** floid(int** W,int n){ vector&lt;int**&gt;D(n); int** A=new int*; for(int i=0;i&lt;n;i++){...

1
MorWespen
15 / 15 / 15
Регистрация: 20.08.2016
Сообщений: 51
Завершенные тесты: 1
27.11.2016, 02:06 2
Цитата Сообщение от programmmistka Посмотреть сообщение
a[i][j]
У тебя это переменная которую ты взяла как массив. И еще там используется двумерный массив,
а он у тебя нигде не создан.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.11.2016, 02:06

Алгоритм Флойда-Уоршалла граф
Собственно мне дан ориентированный граф,в котором вес ребра между вершинами i и j допустим-это шанс...

В чем ошибка? Алгоритм Флойда
Не понимаю почему не запускается, может нужна еще кака-набудь библиотека? Программу нашел в...

Самый короткий путь алгоритм Флойда
Не все тесты проходит, где ошибка? Дан ориентированный взвешенный полный граф, рёбрам которого...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru