Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Написать программу, создающую два потока, которые выполняются в одном адресном пространстве (в одном процессе) https://www.cyberforum.ru/ cpp-beginners/ thread409431.html
Здравствуйте! Есть задание: Написать программу, создающую два потока, которые выполняются в одном адресном пространстве (в одном процессе). Их разделяемый ресурс - целочисленный массив, который содержит данные совместного использования. Потоки должны обрабатывать массив поочередно. Использовать критическую секцию для синхронизации. Пример обработки массива: нахождение суммы всех элементов,...
C++ Преобразование строчных букв в прописные
Помогите с программой: Написать программу, которая во введённой с клавиатуры строке преобразует строчные буквы русского алфавита в прописные за счёт использования двумерной матрицы соответствия T.
C++ Игра Лабиринт Пишу простейшую игру лабиринт.Поле загружаю из файла, курсор двигаю клавишами через SetConsoleCursorPosition, как сделать ограничение на движение курсора в те места где некие "стены" моего лабиринта? https://www.cyberforum.ru/ cpp-beginners/ thread409422.html C++ SAve method https://www.cyberforum.ru/ cpp-beginners/ thread409419.html
Доброго времени суток всем! Разрабатываю программу MDI приложения в Visual C++. Возникли сложности с сохранением, а точнее с методом Save, то есть без вызова SaveFileDialog. Подскажите как примерно можно реализовать метод. Заранее спасибо
C++ ребят помогите пожалуйста.СРОЧНО
:kiss: прогрммка: Вводим с клавиатуры арифметическое выражение типа 1+45+(4-7)... На выходе ответ. Ребят ну пожалуйста.очень надо.
C++ Абстрактный базовый класс(задача) https://www.cyberforum.ru/ cpp-beginners/ thread409399.html
Дано задание :Определите абстрактный базовый класс Person,содержащий поля "пол","возраст". Затем определите производный класс Student, описывающий типичного студента (курс, группа, номер в журнале). В заключении выведите из класса student класс GradStudent, описывающий типичного аспиранта (средний балл). Проинициализируйте через конструктор поля классов данными.Объявите экземпляр класса...
C++ Алгоритм Рабина-Карпа, нужны комментарии к коду https://www.cyberforum.ru/ cpp-beginners/ thread409397.html
Привет всем. Столкнулся с задачей разобраться с кодом алгоритма рабина карпа. Объясните пожалуйста как в данной программе он работает. /* Рабина-Карпа строку алгоритме сопоставления - Предположим, Т и Р состоит только а до я и А. Z.. - проверка является ли P подстрокой Т - Вернуть начальный индекс первого вхождения P в T - m = длина (Т) - n = длина (Р) Худший случай:...
Строки/Матрицы/Функции/Списки C++
Доброго времени суток! Очень нуждаюсь в помощи, срочно. Нужно написать 4 проги, вроде лёгкие, но я сам не могу понять :( 1) Строки: Дана строка: Ваши фамилия, имя и отчество записаны через один пробел. Подсчитать кол - во букв "о" во всей строке. 2) Матрицы:Дана матрица. Найти для каждой строки матрицы сумму максимального и минимального элементов. Распечатать в виде столбца. 3) Функции:...
C++ Удалить каждое четное слово из строки Задача: Удалить каждое четное слово из строки. Это то что надо получить в конце, но т.к. я пытаюсь разобраться, хотелось бы по подробнее шаги рассмотреть! Идею задачи я понимаю. Но сразу же столкнулся с проблемой написания кода...(подсчет количества слов в введенной строке) #include <iostream> #include <cstring> #include <Windows.h> using namespace std; void main() https://www.cyberforum.ru/ cpp-beginners/ thread409394.html C++ остаток от деления https://www.cyberforum.ru/ cpp-beginners/ thread409391.html
обычно использовал "%" для отделения остатка от деления двух чисел только для того чтобы узнать целочисленное деление или нет. Теперь когда надо найти элементом с остатком от деления на три равный 2 не получается. if((a%3)==2) проверял к примеру 12%8 выдает 4 хотя должно быть 5. в чем ошибка. Я уже подумывал что оператор "%" используется только для определения целочисленого деления? ...
Вводить с клавиатуры числа до тех пор, пока не будет нажата клавиша <<ESC>> C++
Задание: Вводить с клавиатуры числа до тех пор, пока не будет нажата клавиша <<ESC>>. На экран вывести кол-во вводимых чисел. #include <string> #include <iostream> #include <conio.h> using namespace std; int main() { int ch; int i;
C++ Борьба за ресурсы https://www.cyberforum.ru/ cpp-beginners/ thread409383.html
Добрый день! Встал вопрос, возможно надуманный. void* a(void* argv) { while(1) { cout << (char*)argv; } } void* b(void* argv)
0 / 0 / 0
Регистрация: 10.09.2011
Сообщений: 9
0

Обход деревьев - C++ - Ответ 2294204

17.12.2011, 01:22. Показов 682. Ответов 0
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, мне нужно обойти два дерева и информацию из одного дерева перенести в другое.







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
#include <iostream>
#include <conio.h>
#include<time.h>
using namespace std;
 
struct Node
{
    double d;         //Данные элемента
    double x;
    double y;
    Node *left;    //Ссылка на левое поддерево
    Node *right;   //Ссылка на правое поддерево
};
Node *first(double d, double x, double y);                    //Формирование первого элемента
Node *search_insert(Node *root, double d, double x, double y); //Поиск с включением
void print_tree(Node *root, int level);     //Обход дерева
//-------------------------------------------
void main()
{
    double x[]={400,200,600,100,300,500,700,50,150,250,350,450,550,650,750,25,75,125,175,225,275,325,375,425,475,525,575,625,675,725,775,12.5,37.5,62.5,87.5,112.5,137.5,162.5,187.5,212.5,237.5,262.5,287.5,312.5,337.5,362.5,387.5,412.5,437.5,462.5,487.5,512.5,537.5,562.5,587.5,612.5,637.5,662.5,687.5,712.5,737.5,762.5,787.5};
    int n=sizeof(x)/8;
    int *y=new int[n];
    for(int i=0;i<n;i++)
    {
        if (i==0) y[i]=1;
        if (i>0 && i<=2) y[i]=50;
        if (i>2 && i<=6) y[i]=100;
        if (i>6 && i<=18) y[i]=150;
        if (i>18 && i<=54) y[i]=200;
        if(i>54)y[i]=200;
    }
    Node *root = first(x[0],0,y[0]);    //Формируем корень дерева
    //Ищем место куда вставить и вставляем новые элементы
    for(int i = 1; i < n; i ++)
    {
        search_insert(root,x[i],0,y[i]);
    }
        
    double d[10] = {23,4,67,1,12,10,5,78,3,18};
    int n2=10;
    Node *root2 = first(d[0],0,0);
    for (int i = 0; i<n2; i++)
    {
        search_insert(root2,d[i],0,0);
    }
 
    getch();
}
 
//--------------------------------------------
//Формирование первого элемента
Node *first(double d,double x, double y)
{
    Node *pv = new Node;      //Создаём элемент
    pv -> d = d;  //Присваиваем значение элементу поля
    pv -> x = x;
    pv -> y = y;
    pv -> left = 0;           //Ссылка на левое поддерево равна NULL
    pv -> right = 0;          //Ссылка на правое поддерево равна NULL
    return pv;               //Возвращаем адрес элемента
}
 
//---------------------------------------------
 
 
//Поиск с включением
Node *search_insert(Node *root,double d,double x,double y)
{
    Node *pv = root, *prev;
    bool found = false;    
    while(pv&&!found)
    {
        prev = pv;                       
        if(d == pv -> d)found = true;        
        else if(d < pv -> d)pv = pv -> left;   
        else pv = pv -> right;             
    }
//---------------------------
 
    if(found)return pv;               
    //Создание нового узла
    Node *pnew = new Node;
    pnew -> d = d;
    pnew -> x = x;
    pnew -> y = y;
    pnew -> left = 0;
    pnew -> right = 0;
    if(d < prev -> d)
    //Присоединение к левому поддереву предка
    prev -> left = pnew;
    else 
    //присоединяем к правому поддереву предка
    prev -> right = pnew;
    return pnew;
}
//---------------------------------------


здесь первое дерево содержит в себе координаты, а второе элементы, мне нужно обойти сразу два дерева и во второе скопировать координаты из первого. Помогите пожалуйста, я уже и не знаю как придумать

Вернуться к обсуждению:
Обход деревьев C++
0
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.12.2011, 01:22
Готовые ответы и решения:

Нужен совет по алгоритмам, обход бинарных деревьев
Всем привет! Вопрос может показаться немного глупым но все же: есть тема курсача &quot;Обход бинарных...

Массив: Учащиеся участвовали в посадке деревьев. Сколько деревьев было посажено
1)Учащиеся 8-х классов участвовали в посадке деревьев. 8-а посадил 100 деревьев, 8-б —122 дерева,...

Разница между понятиями "Обход в прямом направлении" и "Итерационный прямой обход"
Ребятаа, обьясните чем различается: Обход в прямом направлении и Итерационный прямой обход ...

Слияние деревьев
Сижу, мучаюсь, не могу понять что подразумевается в задании о слиянии деревьев. Подвесить вершину...

0
17.12.2011, 01:22
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.12.2011, 01:22
Помогаю со студенческими работами здесь

Реализация деревьев
Я вот сделал простое дерево (максимально дочерних узлов в корне - 3). Теперь нужно доработать,...

Слияние бинарных деревьев
Слияние - это функция выбора элемента из двух Берем два дерева; функцию, которая выбирает один...

Турнирная сортировка деревьев
Здравствуйте, программа турнирная сортировка деревьев. Но проблема в том, что при компиляции выдает...

Сравнить структуру двух деревьев
Написать два варианта функции(с рекурсией и без). Даны два дерева,два указателя на корни. Функция...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru