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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mariya_petrovna
Сообщений: n/a
#1

графы (собрать проект, разработать и доработать классы) - C++

06.12.2012, 23:16. Просмотров 223. Ответов 0
Метки нет (Все метки)

есть код:
Листинг 1. Программа для демонстрации работы алгоритма расчета
с обходом дерева «в глубину»
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
1 #include "stdafx.h"
2 #include <iostream>
3 #include <iomanip>
4 #include <conio.h>
5 using namespace std;
6 enum OperandNumber {opL, opR, opX};
7 class Bit
8 {
9 public:
10 unsigned int LSource, RSource, UpperLevel;
11 OperandNumber UpperLevelOperand;
12 int LValue, RValue;
13 bool isLReady, isRReady;
14 int tmpNum;
15 };
16 void fun(Bit* b[], unsigned int ind)
17 {18 //debug info <<<
19 static int CallCNT=0;
20 if (CallCNT==0)
21 {
22 cout<<setw(3)<<"Num"
23 <<setw(6)<<"LVal"
24 <<setw(6)<<"RVal"
25 <<endl;
26 }
27 CallCNT++;
28 cout<<setw(3)<< ind
29 <<setw(5)<< b[ind]->LValue
30 <<setw(1)<<(b[ind]->isLReady?"+":"-")
31 <<setw(5)<< b[ind]->RValue
32 <<setw(1)<<(b[ind]->isRReady?"+":"-")
33 <<endl;
34 //>>> debug info
35 if (! b[ind]->isLReady)
36 fun(b,b[ind]->LSource);
37 if (b[ind]->UpperLevel != -1) //для верхнего уровня этот блок не исполнять,
38 {
39 //вычислить оставшиеся операнды (в нашем случае только RValue)
40 if (! b[ind]->isRReady) 
41 fun(b,b[ind]->RSource);
42 //к этому моменту все операнды данного уровня гарантированно вычислены
43 //выполнить операцию для всех операндов на данном уровне (ind)
44 int res = b[ind]->LValue + b[ind]->RValue;
45 //положить результат в нужный операнд верхнего уровня (b[ind]->UpperLevel)
46 if (b[ind]->UpperLevelOperand == opL)
47 { 
48 b[b[ind]->UpperLevel]->LValue = res;
49 b[b[ind]->UpperLevel]->isLReady = true;
50 }
51 if (b[ind]->UpperLevelOperand == opR)
52 {
53 b[b[ind]->UpperLevel]->RValue = res;
54 b[b[ind]->UpperLevel]->isRReady = true;
55 }
56 }
57 }
58 int _tmain(int argc, _TCHAR* argv[])
59 {
60 Bit* b[100];
61 int bCNT = 0;
62 b[bCNT++] = new Bit;
63 b[bCNT++] = new Bit;
64 b[bCNT++] = new Bit;
65 b[bCNT++] = new Bit;
66 b[0]->LValue = 501;
67 b[0]->RValue = 502;68 b[0]->isLReady = true;
69 b[0]->isRReady = true;
70 b[0]->LSource = -1;
71 b[0]->RSource = -1;
72 b[0]->UpperLevel  = 2;
73 b[0]->UpperLevelOperand = opL;
74 b[1]->LValue = 511;
75 b[1]->RValue = 512;
76 b[1]->isLReady = true;
77 b[1]->isRReady = true;
78 b[1]->LSource = -1;
79 b[1]->RSource = -1;
80 b[1]->UpperLevel  = 2;
81 b[1]->UpperLevelOperand = opR;
82 b[2]->LValue = 0;
83 b[2]->RValue = 0;
84 b[2]->isLReady = false;
85 b[2]->isRReady = false;
86 b[2]->LSource = 0;
87 b[2]->RSource = 1;
88 b[2]->UpperLevel  = 3;
89 b[2]->UpperLevelOperand = opL;
90 b[3]->LValue = 0;
91 b[3]->RValue = 0;
92 b[3]->isLReady = false;
93 b[3]->isRReady = false;
94 b[3]->LSource = 2;
95 b[3]->RSource = -1;
96 b[3]->UpperLevel  = -1;
97 b[3]->UpperLevelOperand = opX;
98 //поиск верхнего уровня дерева
99 int TopLevelIndex = 0;
100 for (int i=0; i<bCNT; i++)
101 if (b[i]->UpperLevel == -1)
102 { TopLevelIndex = i;
103 break;
104 }
105 fun(b,TopLevelIndex);
106 cout << "Result = " << b[TopLevelIndex]->LValue;
107 for (int i=0; i<bCNT; i++)
108 delete b[i];
109 getch();
110 return 0;
111 }
1. Соберите проект на основе листинга 1, отключив поддержку Юникода.
Убедитесь в работоспособности программы. Отобразите на экране глубину вложенности
вызываемой функции fun().
2. Разработайте класс CompTree для работы с деревом, включив в него методы для
добавления и удаления элемента из дерева. Используйте интерфейсные функции для
доступа к частным данным класса.
3. Доработайте класс так, чтобы в качестве данных могли выступать числа и
матрицы, а к ним были применимы 4 арифметические операции.
4. Обеспечьте возможность чтения/записи операндов из/в файл.



очень нужна помощь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 23:16     графы (собрать проект, разработать и доработать классы)
Посмотрите здесь:

Как собрать проект - C++
#include &lt;winbgim.h&gt; #include &lt;alloc.h&gt; #include &lt;stdio.h&gt; using namespace std; int COL=15, //основной цвет ...

Как собрать этот проект? - C++
Програ по симплекс методу /* user_data.h */ #ifndef _USER_DATA_H_ #define _USER_DATA_H_ class user_data { public:

Как собрать этот проект? - C++
/* user_data.h */ #ifndef _USER_DATA_H_ #define _USER_DATA_H_ class user_data { public: void get_data_from_user();...

Как собрать проект из исходников - C++
Добрый день. У меня есть проект, точнее 3 файла. Main.cpp #include &quot;func.h&quot; int main() { //Тут вызов процедур из func ...

Не могу собрать проект в exe (MVS2012) - C++
Использую mvs2012. Никак не могу понять, как собрать проект в готовый exe. Нажимал там всякие компиляции, сборки, отладку в режиме релиза....

Собрать проект MSVS со всеми dll-ками - C++
Привет! есть проектWIN32 MSVS. все работает. как собрать его таким образом, чтобы не требовались студийные библиотеки на чистой винде? ...

Не получается собрать проект из задания книги Страуструпа - C++
Здравствуйте уважаемые форумчане. Изучаю материал &quot;Принципы и практика использования C++&quot; Страуструпа. Выполняют задание из 8 главы. ...

Разработать классы - C++
Разработать следующие классы: &quot;робот с левой рукой&quot; и &quot;робот с правой рукой&quot;. У каждого из этих классов есть поле с положительным целым...

Разработать классы для данных объектов - C++
Разработать классы для описанных ниже объектов. Включить методы set (...), get (...), show (...). Определить другие методы. Book:...

Разработать классы для описанных ниже объектов - C++
Не могу въехать где что не так.. вот задание: Разработать классы для описанных ниже объектов. Включить в класс методы set (…), get...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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