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

Неориентированный граф!!! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как определить конверсию к типу? http://www.cyberforum.ru/cpp-beginners/thread153318.html
Заранее извиняюсь за ужасное название темы, но ничего другого придумать не смог. У меня есть свой класс(пусть зовется MY), который реализует математические действия(умножение, деление, извлечение квадратного корня и т.д.) с большой точностью. Если сделать выполнить следующую строчку(вместо переменных написаны их типы и на месте * может быть любой другой оператор): int=int*MY; То компилятор...
C++ D-Link c++ как можно приконнектится к роутеру D-Link с помощью языка с++...весь инет перерыл не нашел ничего путного http://www.cyberforum.ru/cpp-beginners/thread153300.html
C++ Балансировка бинарных деревьев
Вот если кому то потребуется вылаживаю рабочую балансировку бинарных деревьев, если есть советы по улучшению то сс удовольствием выслушаю)) //______________Реализация балансировки__________________ void tree::Balance() { if(root!=NULL)Balance(root, NULL);//Проверка не пустое ли дерево, если нет то запуск балансировки с передачей адреса корня } int tree::Balance(elem* r,elem* p) {
Рекурсия: заменить каждую букву строки младшей десятичной цифрой данного числа C++
Всем доброго времени суток=) помогите написать программу, ну или хотя бы объясните задание, а то я его не очень понял =( составить рекурсивную функцию, определяющую в заданной символьной строке кол-во символов, являющихся цифрами и заменяющую каждую букву младшей десятичной цифрой данного числа Заранее благодарен=)
C++ Графы http://www.cyberforum.ru/cpp-beginners/thread153234.html
Решается судьба степеньдии от этих задач, помогите пожалуйста. 1) Для неориентированого графа определить степени вершин. В случае равенства всех степеней , изменитьстепень равенства одной из них. 2) Для неориентированого графа удалить все вершины не смежные с данной.
C++ Работа с EditBox в Visual Studio 2006 Я работаю с MFC інтерфейсов и ставил неактивними EditBox с помощью галочки в properties но теперь постала проблема в том штоб заставить ее исчезнуть в ходе работи програми. Какие есть функции для работи с EditBox и Button. Возможно книгу посоветуйте где есть етот вопрос. Спасибо. Извените за написание. подробнее

Показать сообщение отдельно
dxdy
97 / 97 / 5
Регистрация: 14.06.2010
Сообщений: 283
13.07.2010, 00:59     Неориентированный граф!!!
Понимаю, что время вас поджимает, поэтому показываю "плохо" про тестируемый код:
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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#include <iostream>
#include <fstream>
using namespace std;
 
int ReadFile(char *name);
void IniMatrix(int **&Array, int n, int *&Check);
int *CheckMatrix(int **Array, int n, int *Check);
int PrintMatrix(int **Array, int n);
int deleteMatrix(int **Array, int n, int value);
int SeekMax(int **Array, int n,int *Check);
int **SeekExp(int **Array, int n, int *Check);
 
int main(){
    ReadFile("test.txt");
    return 0;
}
 
//-----------------------
int ReadFile(char *name){
    ifstream in(name);
    if(!in){ cout <<"Error" << endl; return -1; }
 
    int n = 0;
    in >> n;
    if(n <= 0){ cout << "Error" << endl; return -1; }
 
    int **Array = new int*[n];
    for(int i = 0; i < n; i++)
        Array[i] = new int[n];
 
    int *Check = new int[n+1];
    IniMatrix(Array,n,Check);
    int value = 0;
    // считываем из матрицы
        for(int i = 0; i < n; i++){
            for(int j = 0; j < n; j++)
                if( in >> value ){
                    Array[i][j] = value;
                }else{
                    cout << "Matrix ne polsost zapoln" << endl; break;
                }
        }
    PrintMatrix(Array,n);
    in.close();
 
    // считаем количество ребер
    Check = CheckMatrix(Array,n,Check);
 
    // ищем max элемент
    int max = SeekMax(Array,n,Check);
    deleteMatrix(Array,n,max);
 
    // 2 задание
    Array = SeekExp(Array,n,Check);
    cout << "\n Result 2 Zadanie" << endl;
    PrintMatrix(Array,n);
 
    for(int i = 0; i < n; i++)
        delete []Array[i];
    delete []Array;
    delete []Check;
    return 0;
}
 
//-------- Инициализация
void IniMatrix(int **&Array, int n, int *&Check){
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++)
            Array[i][j] = 0;
        Check[i] = 0;
    }
    Check[n] = 0;
}
 
//-------------------
int *CheckMatrix(int **Array, int n, int *Check){
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++){
            if( Array[i][j] == 1 )
                Check[i]++;
        }
        if( Check[i]%2 == 0 ){
            Check[n]++;
        }
    }
    return Check;
}
 
//-----------
int PrintMatrix(int **Array, int n){
    for(int i = 0; i < n; i++){
        for(int j = 0; j < n; j++)
            cout << Array[i][j] <<" ";
        cout << endl;
    }
    return 0;
}
 
//--------------------
int SeekMax(int **Array, int n,int *Check){
    int max = 0;
    for(int i = 0; i < n; i++){
        if( *(Check+i) > *(Check+max) ){
            max = i;
        }
    }
 
    cout << "MAX Verishina = " << max << endl;
 
    return max;
}
 
//---------------------
int **SeekExp(int **Array, int n, int *Check){
    cout << "Kol-vo Chetn Versh = " << Check[n] << endl;
    for(int i = 0; i < n; i++){
        if(Check[i]%2 == 0){
            cout << "Chetn Veerch = " << i << endl;
            // бежим по ее строке и удаляем "первое" ребро
            for(int j = 0; j < n; j++){
                if( Array[i][j] == 1 ){
                    Array[i][j] = 0; break;
                }
            }
        }
    }
    return Array;
}
 
//---------------------
int  deleteMatrix(int **Array, int n, int value){
    int size = n - 1;
    int **newArray = new int*[size];
    for(int i = 0; i < size; i++)
        newArray[i] = new int[size];
 
    int x = 0, y = 0;
    for(int i = 0; i < n; i++){
        if( i != value ){
            
            for(int j = 0; j < n; j++){
                if( j != value ){
                    newArray[x][y++] = Array[i][j];
                }
            }
            x++; y = 0;
        }
    }
 
    cout << "\n Result 1 Zadanie" << endl;
    PrintMatrix(newArray,size);
 
    for(int i = 0; i < size; i++)
        delete []newArray[i];
    delete []newArray;
 
    return 0;
}
Документ "test.txt" должен находится в той же директории, что и сама программа.
Вот как должен выглядеть документ(с начало размер матрицы, а затем сама матрица смежности)
3
0 1 0
1 0 1
1 1 0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru