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

Бинарные деревья с обратной связью - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Представляя строки матрицы, расположить их в соответствии с убыванием характеристик http://www.cyberforum.ru/cpp-beginners/thread659194.html
Суть задания такая. Дана целочисленная прямоугольная матрица.Определите номер первого из столбцов,содержащих хотя бы 1 нулевой элемент.Характеристикой строки назовем сумму её отрицательных четных элементов. Представляя строки заданной матрицы,расположить их в соответствии с убыванием характеристик. Если можно то с коментами по строкам. Добавлено через 1 час 30 минут И ещё, программа которая...
C++ ООП Господа у меня возникло 2 вопроса по ООП т.к. только не давно начал его изучать . 1) Не как не могу понять для чего умные люди его создали , т.е. в чём прелести использование его в программах , кому не трудно объясни те или дайте ссылку где можно по этому поводу подчерпнуть информации . 2) Допустим есть такой код - #include <cstdlib> #include <iostream> using namespace std; class My{ ... http://www.cyberforum.ru/cpp-beginners/thread659191.html
C++ Заменить отрицательные элементы одномерного массива целых чисел на нули
Заменить отрицательные элементы одномерного массива целых чисел на нули, а затем подсчитать количество нулевых элементов. 1. отформатировать исходный код программы согласно требованиям к оформлению исходного кода; 2. использовать динамические массивы (размер массива вводится пользователем с проверкой ввода); 3. выявить ограничения на вводимые пользователем значения и, если таковые имеются, не...
если a>=b>=c>=d надо все уровнять к нулю; а сели a<b<c<d. то на каждую цифру привавить 1, а в остальных сллучаях уменшить на 1. C++
a, b, c, d целые числа, если a>=b>=c>=d надо все уровнять к нулю; а сели a<b<c<d. то на каждую цифру привавить 1, а в остальных сллучаях уменшить на 1.
C++ xCode консоль показывает не все элементы http://www.cyberforum.ru/cpp-beginners/thread659144.html
Почему то когда пишу проект в command line tool , к примеру простую программу типа: введите число и потом мы его выводим . Так вот при запуске в консоли, где вводим числа, почему то при вводе к примеру 23445 видно лишь 2, т.е только один элемент.А считает его нормально, т.е выводит нормально. Помогите пожалуйста, как исправить?Где-то что-то в найстройках включил?
C++ Организация инструкции switch Изучаю с++ по книге Липпмана. Помогите правильно огранизовать код: // Программа подсчитвыет количество гласных символов c // объекта cin при помощи инструкции switch. // Измените рассматриваемую программу так, чтобы она также // подсчитывала прописные символы. Изменить данную программу так // чтобы она подсчитывала количество встречных двусимвольных // последовательностей ff, fl, fi. ... подробнее

Показать сообщение отдельно
novi4ok
549 / 502 / 8
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
27.09.2012, 19:06     Бинарные деревья с обратной связью
некрасиво, но должно работать:

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
class Node {
protected:
    int m_Value;
    Node *m_pParent;
    Node *m_pLeft;
    Node *m_pRight;
public:
    Node (int value) : m_Value (value), m_pParent (NULL), m_pLeft (NULL), m_pRight (NULL){};
    ~Node () { delete m_pLeft; delete m_pRight; }
 
    void setChildren (Node *pLeft, Node *pRight){ m_pLeft = pLeft;
            m_pRight = pRight;
            m_pLeft->m_pParent = this;
            m_pRight->m_pParent = this;
    }
    const Node* getParent () { return m_pParent; };
    const Node* getLeft () { return m_pLeft; };
    const Node* getRight () { return m_pRight; };
    const Node* getSibling () {
        if ( m_pParent != NULL){
            if (m_pParent->m_pLeft == this){
                return m_pParent->m_pRight;
            } else {
                return m_pParent->m_pLeft;
            }
        } else {
            return NULL;
        }
    }
    int getValue () { return m_Value; }
};
 
void populate (Node *pRoot){
    // level 1 (4 nodes)
    Node *pNodeL10 = new Node (5);
    Node *pNodeR10 = new Node (7);
    Node *pNodeL11 = new Node (2);
    Node *pNodeR11 = new Node (76);
 
    // level 0 (two nodes)
    Node *pNodeL00 = new Node (3);
    Node *pNodeR00 = new Node (13);
 
    pRoot->setChildren (pNodeL00, pNodeR00);
    pNodeL00->setChildren (pNodeL10, pNodeR10);
    pNodeR00->setChildren (pNodeL11, pNodeR11);
}
 
void test(){
    Node root (111);
    populate (&root);
    const Node *pTestNode = root.getLeft();
    if (pTestNode != NULL){
        // выведи родителя и детей этого узла можешь получить "брата" с помощью getSibling();
        ...
        //ну, и т.д.
    }
}
 
Текущее время: 18:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru