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

с++ дерево классы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Масивы http://www.cyberforum.ru/cpp-beginners/thread258945.html
В квадратном массиве заданы целые числа. Определить количество элементов главной диагонали. только пожалуйста сделайте так как для новичков с базовыми цыклами и масивами
C++ Седловая точка Элемент матрицы назовем седловой точки, если он является наименьшим в своей строке и одновременно крупнейшим в своем столбце или, наоборот, является крупнейшим в своей строке и наименьшим в своем столбце. Для заданной целой матрицы размером 10 × 15 напечатайте индексы всех ее седловых точек. С++ http://www.cyberforum.ru/cpp-beginners/thread258942.html
Как подключить Glut C++
Помогите пожалуйста подключить Glut хотя бы к одному из компиляторов Dev c++ (автообновление не работет почему не знаю) Visual studio2010 и borland6 Не дублируйте темы - это нарушает правила форума.
Определить количество элементов главной диагонали массива C++
В квадратном массиве заданы целые числа. Определить количество элементов главной диагонали. только пожалуйста сделайте так как для новичков с базовыми цыклами и масивами
C++ Enter The Matrix http://www.cyberforum.ru/cpp-beginners/thread258926.html
Помогите сделать два задания в одной програме: 1.В матрице mxn типа double определить номер столбца в котором находится минимальный элемент. (m и n вводятся с клавиатуры) 2.Вывести матрицу типа: 1 2 3 4 5 5 1 2 3 4 4 5 1 2 3 3 4 5 1 2 2 3 4 5 1 Буду очень благодарен=))
C++ Сумма элементов главной диагонали массива В квадратном массиве записаны целые числа. Определить сумму элементов главной диагонали массива, которые больше 20. Добавлено через 17 минут забыл дописать, код на Си пожалуйста подробнее

Показать сообщение отдельно
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
20.03.2011, 05:21  [ТС]     с++ дерево классы
ну если кому пригодится потом вот вполне рабочее дерево
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
#ifndef TREE_H
#define TREE_H
#pragma once
 
#include "TreeItem.h"
#include <vector>
 
using namespace std;
 
 
class Tree
{
    typedef int Value;
public:
    Tree() { 
        TreeItem *tmp = new TreeItem(0);
        tree.push_back(tmp);
    }
 
    void add(const Value &val) {
        //TreeItem tmp(tree.size());
        TreeItem *tmp = new TreeItem(tree.size());
        //tree[val].child.push_back(&tmp);
        tree.push_back(tmp); //
        tree[tree.size() - 1]->parent = tree[val];
        tree[val]->child.push_back(tree[tree.size() - 1]);
        (tree[val]->numOfChilds)++;
        
    }
 
 
    TreeItem& operator[](const Value &index) {
        return *tree[index]; 
    }
 
    Value size() {
        return tree.size();
    }
 
    bool empty() {
        return (tree.size() == 0);
    }
 
    void clear () {
        int i = 0;
        tree.clear();
    }
 
    ~Tree() {
        clear();
    }
 
private:
    vector<TreeItem*> tree;
};
 
#endif
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
#ifndef TREEITEM_H
#define TREEITEM_H
#pragma once
 
#include <vector>
 
using namespace std;
 
 
class TreeItem
{
    friend class Tree;
 
    typedef int Value;
 
public:
    TreeItem(const Value &val) {
        parent = 0;
        value = val;
        numOfChilds = 0;
    }
 
    TreeItem(const TreeItem &Q) {
        value = Q.value;
        parent = Q.parent;
        numOfChilds = Q.numOfChilds;
        child = Q.child;
    }
 
    TreeItem operator=(const TreeItem &Q) {
        TreeItem tmp(Q.value);
        //value = Q.value;
        //parent = Q.parent;
        tmp.numOfChilds = Q.numOfChilds;
        tmp.child = Q.child;
 
        return tmp;
    }
    
    Value children() {
        //Возвращает количество сыновей
        return numOfChilds;
    }
 
    Value& operator[](const Value &index) {
        //Возвращает value сына
        return child[index]->value;
    }
    
    Value getParent() {
        return parent->value;
    }
 
    ~TreeItem() {
        delete this;
    }
 
private:
    Value value;
    Value numOfChilds;
    TreeItem *parent;
    vector<TreeItem*> child;
    
};
 
#endif
вместо вектора на элементы надо было создавать вектор на ссылки на элементы, потому что сами элементы динамические, видимо поэтому дерево превращалось в кашу при добавлении новых элементов к старым
 
Текущее время: 02:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru