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

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

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

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

26.04.2013, 10:40. Просмотров 327. Ответов 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;
}
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) вниз...

3
Юля_программист
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 минуты

Не по теме:

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

0
Саша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 тоже непонятно, не могу понять сам ход работы программы
Что делают эти функции
0
MrGluck
Модератор
Эксперт CЭксперт С++
7278 / 4439 / 650
Регистрация: 29.11.2010
Сообщений: 12,018
26.04.2013, 16:52 #4
Программа, которая кушает память и не освобождает её.

Саша777, пока вы не познаете суть рекурсии, для вас даже одно бинарное дерево будет как темный лес
0
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...


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

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

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