Форум программистов, компьютерный форум CyberForum.ru

Нахождение радиуса, диаметра и центра графа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Перегрузка оператора ifstream >> http://www.cyberforum.ru/cpp-beginners/thread403346.html
Перегрузил >> для ифстрима friend ifstream &operator >> (ifstream &is, Car &cc) { is >> cc.weight >> cc.year >> cc.name; return is; } Далее если в мэйне создаю объект, который создается конструктором по умолчанию, то >> не работает, пишет что нет такой перегрузки, если же создать объект со значениями, то все хорошо. И также, если конструктор по умолчанию обнуляет переменные объекта,...
C++ как определить цвет под указателем мышки? как определить цвет под указателем мышки? или подскажите источник где можно найти(кроме гугла) http://www.cyberforum.ru/cpp-beginners/thread403342.html
Почему необходимо применять cin.get() C++
Почему необходимо применять cin.get() ? В книге Липмана вообще не упоминается cin.get(), а без неё идёт бесконечный вывод строки ошибки Есть ли способ избежать множественного повторения вывода строки ошибки, если ,например, долнжно введено быть целочисленное значение, а когда ввожу например adsdasdsa, то он столько раз повторяет строку ошибки, сколько недопустимых значений я ввёл ((( unsigned...
Помогите решить задачу на C++ для Windows XP C++
написать программу, которая управляет приложением calc, после 5 секунд , проверяет является ли работа последний программа закончена, или она ещё работает, если она до сих пор работает, то закрывает его.
C++ устраните неполадки Microsoft Visual c++ runtime library http://www.cyberforum.ru/cpp-beginners/thread403324.html
CodeBlocks" и C++ Builder 6 не работают. Выводит : this application has requested the runtime to terminate it in unusual way.please contact the aplication's support team for more information"
C++ Косяки с графикой при переключении окон Вобщем, я отчаялся понять в чем дело. Нужно в заданной клетке поля нарисовать нолик(игра "Крестики-нолики"). Все норм, но когда я переключаю окно, на какое-нибудь другое, а затем снова на окно программы, то все нолики, кроме, почему-то, ноликов нулевого столбца, рисуются красным и с другим радиусом "дырки". Хотя в функции есть if else на выбор кисти, и выбор идет между пурпурной и синей. да и... подробнее

Показать сообщение отдельно
amor1k
Студент
 Аватар для amor1k
147 / 147 / 24
Регистрация: 18.01.2011
Сообщений: 469
10.12.2011, 20:08     Нахождение радиуса, диаметра и центра графа
диаметр
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
int Diam()
{
    int **edge = new int *[n];
    for (int i = 0; i < n; i++)
        edge[i] = new int [n];
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++) {
            edge[i][j] = a[i][j];
            if (!edge[i][j]) 
                edge[i][j] = 10000;
        }
    }
    for (int k = 0; k < n; k++)
        for (int i = 0; i < n; i++)
            for (int j = 0; j < n; j++)
                if (i != j)
                    edge[i][j] = MIN(edge[i][j], edge[i][k]+edge[k][j]);
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (edge[i][j] == 10000) 
                edge[i][j] = 0;
        }
    }
    int max = edge[0][1];
    for(int i = 0; i < n; i++)
    {
        for (int j = i+1; j < n; j++) {
            if(edge[i][j] > max)
                max = edge[i][j];
        }
    }
    return max;
    delete [] edge;
}
радиус
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
int Radius(int f)
{
    int **edge = new int *[n];
    for (int i = 0; i < n; i++)
        edge[i] = new int [n];
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++) {
            edge[i][j] = a[i][j];
            if (!edge[i][j]) 
                edge[i][j] = 10000;
        }
        for (int k = 0; k < n; k++)
            for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                    if (i != j)
                        edge[i][j] = MIN(edge[i][j], edge[i][k]+edge[k][j]);
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (edge[i][j] == 10000) 
                    edge[i][j] = 0;
            }
        }
        int min = edge[f][f+1];
        for (int j = f+1; j < n; j++) {
            if(edge[f][j] < min)
                min = edge[f][j];
        }
        return min;
        delete [] edge;
}
Добавлено через 40 секунд
центр
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
void Centr()
{
    system("cls");
    int **edge = new int *[n];
    for (int i = 0; i < n; i++)
        edge[i] = new int [n];
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++) {
            edge[i][j] = a[i][j];
            if (!edge[i][j]) 
                edge[i][j] = 10000;
        }
        for (int k = 0; k < n; k++)
            for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                    if (i != j)
                        edge[i][j] = MIN(edge[i][j], edge[i][k]+edge[k][j]);
        cout << "Расстояния: \n" << endl;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (edge[i][j] == 10000) 
                    edge[i][j] = 0;
                cout << edge[i][j] << " ";
            }
            cout << endl;
        }
        int min, max;
        int *ecc = new int [n];
        int *rad = new int [n];
        int *deg = new int [n];
        for (int i = 0; i < n; i++) {
            rad[i] = ecc[i] = deg[i] = 0;
            min = edge[i][i+1];
            max = edge[i][i+1];
            for (int j = i+1; j < n; j++) {
                if(edge[i][j] < min)
                {
                    min = edge[i][j];
                }
                if(edge[i][j] > max)
                    max = edge[i][j];
            }
            deg[i] = min;
            ecc[i] = max;
        }
        int j = 0;
        for(int i = 0; i < n; i++)
        {
            if(deg[i] == ecc[i])
                rad[j++] = i;
        }
        cout << "\n";
        cout << "Центры графа: ";
        for(int i = 0; i < j; i++)
            cout << rad[i]+1 << " ";
        delete [] edge;
        delete [] deg;
        delete [] rad;
        delete [] ecc;
}
Добавлено через 18 секунд
центр
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
void Centr()
{
    system("cls");
    int **edge = new int *[n];
    for (int i = 0; i < n; i++)
        edge[i] = new int [n];
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n; j++) {
            edge[i][j] = a[i][j];
            if (!edge[i][j]) 
                edge[i][j] = 10000;
        }
        for (int k = 0; k < n; k++)
            for (int i = 0; i < n; i++)
                for (int j = 0; j < n; j++)
                    if (i != j)
                        edge[i][j] = MIN(edge[i][j], edge[i][k]+edge[k][j]);
        cout << "Расстояния: \n" << endl;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (edge[i][j] == 10000) 
                    edge[i][j] = 0;
                cout << edge[i][j] << " ";
            }
            cout << endl;
        }
        int min, max;
        int *ecc = new int [n];
        int *rad = new int [n];
        int *deg = new int [n];
        for (int i = 0; i < n; i++) {
            rad[i] = ecc[i] = deg[i] = 0;
            min = edge[i][i+1];
            max = edge[i][i+1];
            for (int j = i+1; j < n; j++) {
                if(edge[i][j] < min)
                {
                    min = edge[i][j];
                }
                if(edge[i][j] > max)
                    max = edge[i][j];
            }
            deg[i] = min;
            ecc[i] = max;
        }
        int j = 0;
        for(int i = 0; i < n; i++)
        {
            if(deg[i] == ecc[i])
                rad[j++] = i;
        }
        cout << "\n";
        cout << "Центры графа: ";
        for(int i = 0; i < j; i++)
            cout << rad[i]+1 << " ";
        delete [] edge;
        delete [] deg;
        delete [] rad;
        delete [] ecc;
}
 
Текущее время: 18:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru