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

Как правильно отнаследовать? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Разработайте программу на С++, которая вводила бы пробег в милях и бензин, использованный из каждой емкости http://www.cyberforum.ru/cpp-beginners/thread1107997.html
Здравствуйте! Помогите пожалуйста! Программа работает, но не правильно немного, с меткой проблемы, результат выводит не верно на последних шагах. Очень хочется понять свои ошибки, но сама не...
C++ Написать программу содержащую процедуры формирования и просмотра списка и функцию вставляющую элемент с заданным номером написать программу содержащую процедуры формирования и просмотра списка и функцию вставляющую элемент с заданным номером http://www.cyberforum.ru/cpp-beginners/thread1107993.html
C++ Определить, упорядочены ли по возрастанию или по убыванию цифры в записи натурального n
Код работает только для возрастающих чисел, а для убывающих выдаёт NO. Думаю, проблема с индексами в массиве, но как ни пробовал, ничего не получилось изменить. Заранее благодарю :) Вот код:...
C++ Setlocale() и getline()
Доброго времени суток. Вот код тестовой программы: void main() { setlocale(LC_ALL, "Russian"); char a; cin.getline(a, sizeof(a)); cout<<a<<endl; system("pause"); }
C++ Составить программу вычисления экспоненты числа, значение которого ближе всего к значению функции y http://www.cyberforum.ru/cpp-beginners/thread1107984.html
Даны три числа А,В,С. Составить программу вычисления экспоненты числа, значение которого ближе всего к значению функции y=(sin(b)+cos(a))/ln(c+2). на языке С
C++ Ошибка в программе по нахождению минимельного элемента последовательности Всем привет. Вот программа по нахождению максимального и минимального элемента последовательности, а также номера этого элемента. Для максимального элемента результат верный: 10-ый элемент... подробнее

Показать сообщение отдельно
eXplo1dl
0 / 0 / 0
Регистрация: 16.10.2012
Сообщений: 58

Как правильно отнаследовать? - C++

28.02.2014, 21:23. Просмотров 191. Ответов 1
Метки (Все метки)

Здарова! Такой вопрос! как можно правильно записать следующее:есть два класса 1-й класс -граф, второй класс-минимальный путь из одной точки до другой.Хотел сделать следующее, есть некоторая перменная "k" типа Graph(1-й класс) там вводится граф. Затем эта переменная передается в другой класс Minway(поиск минимального пути в графе), чтобы использовать саму таблицу смежности.Как можно это правильно сделать? не подскажите как поправить это дело.Заранее спасибо за помощь!
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
#include <iostream>
 
using namespace std;
#define SIZE 3
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
class Graph{
    
    public:
        void add(int,int,int);
        void out();
        void normalize();
        int table [SIZE][SIZE];
};
 
void Graph::normalize()
{
    int i,j;
    
    for(i=0;i<5;i++)
    {
        for(j=0;j<5;j++)
        {
            table[i][j]=0;
         }
    }
}
 
void Graph::add(int i,int j,int m)
{
    table[i][j]=m;
}
 
void Graph::out ()
{
    int i,j;
    
    for(i=0;i<SIZE;i++)
    {
        for(j=0;j<SIZE;j++)
        {
            cout<<table[i][j];
        }
        cout<<"\n";
    }
}
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
class Minway:public Graph
{
    public:
        void add(Graph,int);
        void poschain(Graph,int,int,int,int[SIZE][SIZE]);
        void outchain(int[SIZE][SIZE],int,int);
        void out();
    private:
        int quantity=0;
        int start=0,finish=0;
        int chain[SIZE] {0};
};
 
void Minway::out()
{
    for(int i=0;i<quantity;i++)
    {
        cout<<endl<<chain[i]<<">>";
    }
}
 
void Minway::outchain(int helptable[SIZE][SIZE],int start,int finish)
{
    int i=finish,j=0;
    int dopchain[SIZE];
    
    while(i!=start)
    {
        dopchain[j]=i;
        i=helptable[i][i];
        j++;
    }
    for (int k=0;k<j;k++)
    {
        chain[k]=dopchain[j-1-k];
        cout<<chain[k]<<">>";
    }
}
void Minway::poschain(Graph k,int start,int finish,int quantity,int helptable[SIZE][SIZE])
{
    int i=start;
    
    for(int j=0;j<quantity;j++)
    {
        if((j!=start)&&(table[j][j]>table[i][i]+table[i][j]))
        {
            helptable[j][j]=i;
            table[j][j]=table[i][i]+table[i][j];
            poschain(k,j,finish,quantity,helptable);
        }
    }
}
 
void  Minway::add(Graph k,int l)
{
    int MaxInt= std::numeric_limits<int>::max();
    quantity=l;
    cout<<"Введите начало пути";
    cin>>start;
    cout<<"Введите конец пути";
    cin>>finish;
    int helptable[SIZE][SIZE];
    
    for (int i=0;i<quantity;i++)
    {
     if(i!=start)
     {
         table[i][i]=MaxInt;
     }
    }
    poschain(k,start,finish,quantity,helptable);
    outchain(helptable,start,finish);
}
 
 
////////////////////////////////////////////////////////////////////////////////////////////////////////////
 
int main()
{
    Graph k;
    Minway way;
    k.normalize();
    int i,j,apex;
    
    for (i=0;i<3;i++)
    {
         for (j=0;j<3;j++)
         {
             cin>>apex;
             k.add(i,j,apex);
         }
    }
 
    k.out();
    way.add(k,i);
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru