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

Дерево турнира с выбыванием - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Сколько есть способов выплатить сумму http://www.cyberforum.ru/cpp-beginners/thread697600.html
В Эстонии в обращении находятся 1,2,5,10,25,50,100 и 500 - кроновые купюры. Написать программу, которая сможет найти сколько есть различных способов выплатить данную сумму. На единственной строке текстового файла raha.sis.txt дано целое число S(0 < S < 250). На единственной строке текстового файла raha.val.txt вывести количество различных способов выплаты. Пример: Файл raha.sis.txt...
C++ Конструктор копирования в c++ Добрый день, такая задача по с++ Какая ошибка в следующей реализации конструктора копирования по умолчанию и деструктора?? Какой еще оператор необходимо перегрузить для данного класса?? typedef unsigned int dlina; const dlina n=30; class Mouse { dlina rost; protected: http://www.cyberforum.ru/cpp-beginners/thread697586.html
C++ Не работает код
Дан файл zzz.txt В нем подсчитать кол-во букв «а»(латинская) с разбивкой по строчкам. В другом файле (qqq.txt) вывести результаты Всего вхождений: 3 (т.е. общее количествол букв а) Строка 1: 2(т.е. количество букв в этой строке) В данном коде не подсчитывает количество букв "а" как в строке так и в файле #include "stdafx.h" #include <iostream> #include <stdlib.h>
Необходимо перевести из паскаля в с++ C++
Имеется программа на Паскале: uses crt; var a: array of string; i,j,k,l: byte; s,sl: string; begin write('s='); readln(s); s:=s+' '; sl:=''; j:=0; for i:=1 to length(s) do if not (s in )
C++ Выставить цифры в числе 1234567890 таким образом, чтобы новое число делилось без остатка на все числа от 2 до 18 включительно. http://www.cyberforum.ru/cpp-beginners/thread697559.html
Дана задача. Выставить цифры в числе 1234567890 таким образом, чтобы новое число делилось без остатка на все числа от 2 до 18 включительно. Я написал нижеследующее, но программа выводит почему то такие числа как 12252240, 24504480 и т.д. Что я тут неправильно написал? /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////...
C++ Массив: Учащиеся участвовали в посадке деревьев. Сколько деревьев было посажено 1)Учащиеся 8-х классов участвовали в посадке деревьев. 8-а посадил 100 деревьев, 8-б —122 дерева, 8-в — 98 деревьев, 8-г — 104 дерева, 8-д — 121 дерево. Определить, сколько посажено деревьев. подробнее

Показать сообщение отдельно
gunslinger17
 Аватар для gunslinger17
0 / 0 / 0
Регистрация: 25.02.2012
Сообщений: 80
14.11.2012, 19:00     Дерево турнира с выбыванием
Не совсем понимаю, как осуществить процедуру заполнения дерева. Точнее, не понимаю, как поместить в корень максимальный элемент.
Имеется вот такое дерево с симметричным обходом. Нужно с помощью турнира с выбыванием отсортировать данный массив. Заранее благодарен за помощь.
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
#define _CRT_SECURE_NO_WARNINGS
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <conio.h>
using namespace std;
struct tree 
{
    int info;
    tree *right;
    tree *left;
};
tree *create_tree(tree *current, int element)
{
   if (current==NULL) 
     {
        current = new tree;
        current->info = element;
        current->right = NULL;
        current->left = NULL;
        return current;
     }
   if (current->info < element)          
     current->right = create_tree(current->right, element);
   else
     current->left  = create_tree(current->left, element);
   return current;
}
void simmetric(tree *current,int l)
{
   if(current!=NULL)
    {
        simmetric(current->left,l+1);
        for(int i=0;i<l;i++)
            cout << "\t";
        cout << current->info << endl;
        simmetric(current->right,l+1);        
    }
}
void show_tree(int massive[], int mcounter)       
{
   tree *current;
   current = NULL;
   for (int i=0; i<mcounter; i++)        
      current = create_tree(current, massive[i]);     
   cout<<"\nSymmetric: \n";
   simmetric(current,0); 
}
void delete_tree(tree **current)
{
    int count=13;
    if(*current!=NULL)
    {
        delete_tree(&(*current)->left);
        delete_tree(&(*current)->right);
        delete *current;
        count--;
        if(count==0)
            *current=NULL;
    }
}
void showsymmetric(tree *current,int l)
{
    if(current!=NULL)
    {
        showsymmetric(current->left,l+1);
        for(int i=0;i<l;i++)
            cout << "\t";
        cout << current->info << endl;
        showsymmetric(current->right,l+1);
    }
    delete_tree(&current);
}
int main()
{
int massive [13] = {5, 9, 13, 14, 2, 7, 1, 15, 18, 8, 4, 3, 50};
show_tree(massive,13);
getch();
return 0;
P.S. Можно код не исправлять, а просто объяснить принцип, я постараюсь понять)

Добавлено через 1 час 3 минуты
ап штоле)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru