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

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

Войти
Регистрация
Восстановить пароль
 
Саша777
1 / 1 / 0
Регистрация: 19.05.2012
Сообщений: 13
#1

Нужно разобраться в коде - C++

26.04.2013, 10:40. Просмотров 324. Ответов 3
Метки нет (Все метки)

Откомментируйте пожалуйста по строчке ,кто ,что может,а то не могу разобраться,это программа обход бинарного дерева в глубину справа налево
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
// semestr.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
#include <fstream>
using namespace std;
struct Info
{
    int number;
    int data;
};
ifstream in("input.txt"); // файл откуда считываем
Info dd[10]; //массив структур, содержащий номера вершин и их значения
struct derevo{            //структура дерево
int info;
derevo *left, *right;
};
void Createderevo(derevo *&go, int n)  // построение из входного файла
{
    setlocale ( LC_ALL,"Russian" );
    if(n==1){
    go = new derevo;
    in >> go -> info;
    go -> right = NULL;
    go -> left = NULL;
    }
    else
    {
        go = new derevo;
        int nl = n/2;
        int nr = n - nl - 1;
        if(nl==0)
            go -> right = NULL;
        else
            Createderevo(go -> right,nl);
        if (nr == 0)
            go -> left = NULL;
        else
            Createderevo(go -> left,nr);
        in >> go -> info;
    }
}
int i = 0;
void pp(derevo *curr)  // корень, левая, правая.
{
    if (!curr)
        return;
    dd[i].data=curr->info;
    dd[i].number=i+1;
    i++;
    pp(curr->left);
    pp(curr->right);
}
int main()
{
    derevo *mm; //дерево
    Createderevo(mm,10); //создаем дерево, заполняем
    pp(mm); //обход дерева
    for(int j = 0; j < 10; j++) // номера и значения вершин на экран
    {
        cout<<"Вершина: "<<dd[j].number<<" "; //номер
        cout<<"Значение: "<<dd[j].data<<endl;  //значение
    }
    system("pause");
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2013, 10:40
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Нужно разобраться в коде (C++):

нужно разобраться в коде - C++
Определить минимальный положительный элемент главной диагонали матрицы А(5,5) и заменить все элементы строки и столбца,в котором он...

Нужно разобраться в коде - C++
Господа, я новичок. Хочу разобраться в коде. Задача была изменить размер консольного окна. И, поискав на форуме, нашел ниже написанный...

Нужно разобраться в коде - C++
Написать программу, которая в произвольном текстовом файле определяет количество предложений и слов, строчных и заглавных символов, знаков...

Нужно разобраться в коде: палиндромы в лексикографическом порядке - C++
void nextSequence(string &amp;sequence, int k) { int i = sequence.size() - 1; while (i &gt;= 0 &amp;&amp; sequence == k - 1) { i--; } ...

Значения в матрице. Нужно разобраться в коде с++ человеку не знающему языка - C++
Добрый день. На просторах интернета нашел программу, она уравнивает химическую реакцию в переданной ей строчке. Написана языке c++ пытаюсь...

Разобраться в коде - C++
Алгоритм сортирует элементы матрицы согласно схеме (см. изображение), в порядке убывания и методом пузырька. Происходит движение: 1) вниз...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Юля_программист
468 / 123 / 19
Регистрация: 04.05.2012
Сообщений: 598
Записей в блоге: 1
26.04.2013, 11:49 #2
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
// semestr.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
#include <fstream>
//все выше это заголовочные файлы, в них прототипы стандартных функций
using namespace std;//пространство имен
struct Info//это структура с двумя целочисленными переменными
{
    int number;
    int data;
};
ifstream in("input.txt"); // файл откуда считываем
Info dd[10]; //массив структур, содержащий номера вершин и их значения
struct derevo{            //структура дерево
int info;
derevo *left, *right;
};
void Createderevo(derevo *&go, int n)  // построение из входного файла
{
    setlocale ( LC_ALL,"Russian" );//кодировка
    if(n==1){//если n равно 1 то заходим сюда
    go = new derevo;//создание объекта в куче
    in >> go -> info;
    go -> right = NULL;
    go -> left = NULL;
    }
    else //если n не равно 1 идем сюда
    {
        go = new derevo;
        int nl = n/2;//считаем переменную
        int nr = n - nl - 1;//считаем переменную
        if(nl==0)//опять условие
            go -> right = NULL;//предпологаю, что это обнуление
        else
            Createderevo(go -> right,nl);//вызываем рекурсивную функцию с новыми параметрами
        if (nr == 0)
            go -> left = NULL;
        else
            Createderevo(go -> left,nr);
        in >> go -> info;
    }
}
int i = 0;
void pp(derevo *curr)  // корень, левая, правая.
{
    if (!curr)
        return;
    dd[i].data=curr->info;//вызов переменной структуры и запись в массив
    dd[i].number=i+1;
    i++;
    pp(curr->left);
    pp(curr->right);
}
int main()//собственно главная функция
{
    derevo *mm; //дерево
    Createderevo(mm,10); //создаем дерево, заполняем
    pp(mm); //обход дерева
    for(int j = 0; j < 10; j++) // номера и значения вершин на экран
    {
        cout<<"Вершина: "<<dd[j].number<<" "; //номер
        cout<<"Значение: "<<dd[j].data<<endl;  //значение
    }
    system("pause");
    return 0;
}
Добавлено через 2 минуты

Не по теме:

а вообще Вам бы быстрее помогли, если бы Вы сказали какие строчки Вам не понятны конкретно)
Т.к. код в принципе не содержит, чего то сложного, здесь все стандартные операторы, и если не понятно надо начинать с гугла.
Или более конкретно задавать вопрос:Например, не понятна логика работы

Саша777
1 / 1 / 0
Регистрация: 19.05.2012
Сообщений: 13
26.04.2013, 16:38  [ТС] #3
Вот совсем не могу понять void createderevo, например, что такое nl, nr
Void pp тоже непонятно, не могу понять сам ход работы программы
Что делают эти функции

Добавлено через 9 секунд
Вот совсем не могу понять void createderevo, например, что такое nl, nr
Void pp тоже непонятно, не могу понять сам ход работы программы
Что делают эти функции
MrGluck
Модератор
Эксперт CЭксперт С++
7210 / 4376 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
26.04.2013, 16:52 #4
Программа, которая кушает память и не освобождает её.

Саша777, пока вы не познаете суть рекурсии, для вас даже одно бинарное дерево будет как темный лес
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.04.2013, 16:52
Привет! Вот еще темы с ответами:

Не могу разобраться в коде - C++
На просторах форума нашёл полезный для меня код, но не понимаю ничего, что написанно в циклах ниже 33 строки (там где подцикл...

Помогите разобраться в коде - C++
Помогите мне разобраться в коде. Заранее спасибо. int seek_substring_KMP (char s, char p) { int i, j, N, M; N = strlen(s); M =...

пмг разобраться в коде - C++
#include &quot;stdio.h&quot; int main() { const int N=9; int mas={1,2,3,4,5,6,7,8,9}, l=0, r=N-1, i_temp, i, temp; ...

Не могу разобраться в коде - C++
Всем дня доброго.В плюсах я ровным счетом 0.Расшифровать по нормальному не могу.Отрывок из кода описывающего программы шахматы. bool...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
26.04.2013, 16:52
Ответ Создать тему
Опции темы

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