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

турнирная сортировка деревьев - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти все меньшие N из числел Мерсена http://www.cyberforum.ru/cpp-beginners/thread990119.html
Дано натуральное число N. Найти все меньшие N из числел Мерсена. Простое число называется числом Мерсена, если оно может быть представлено в виде 2^p-1, где p – тоже простое число.
C++ Одна ошибка в двомерном массиве Здраствуйте помогите найти исправить ошибку. Сформировать квадратную матрицу действительных чисел. Количество строк и столбцов ввести с клавиатуры. Написать функцию для нахождения суммы элементов, находящихся на главной диагонали. // ConsoleApplication8.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include <iostream> #include <cmath> http://www.cyberforum.ru/cpp-beginners/thread990116.html
Одномерний массив C++
Массив должен передаваться в функцию в виде параметра. Для ввода и печати массива написать отдельные функции. Созданные функции выделить в отдельный модуль. В основной программе осуществить вызов функции для двух случаев: 1) в функцию передается статический массив, 2) в функцию передается динамический массив. 1. Написать функции для выполнения операций над одномерным массивом целых чисел:...
Определить год, когда прибыль была максимальна C++
Здраствуйте. Помогите найти ошибку и доделать програму. Предприятие имеет 5 филиалов, каждый из которых в конце года отчитывается о полученном за год прибыль. Данные за последние 4 года ввести в двумерный массив, где каждая строка отображает данные по одной из филиалов, а каждый столбец - это соответствующий год. 1. Написать функции для ввода и вывода массива. 2. Написать функции для...
C++ 16-ричный дамп бинарного файла http://www.cyberforum.ru/cpp-beginners/thread990106.html
задание: сделать программу, виводящую 16-ричный дамп бинарного файла (вместо каждого байта входного файла виводится значение в 16-ричной системе) Для работы с файлами использовать функции fstream. ошибок в синтаксисе как бы нет, но походу не работает все же #include <fstream> #include <iostream> #include <cstdlib> using namespace std; int main () { streamoff lSize;
C++ Задача на одномерный массив Здаствуйте. Помогите решить задачу. Надо сформировать одномерный массив целых чисел, используя генератор случайных чисел. Уничтожить элемент с номером К. И добавить после каждого четного элемента массива элемент со значением 0. Вот что у меня получилось. Буду рад любой помочи. #include <iostream> using namespace std; int main() { const int n=20; int a; srand(8); for (int i=0; i<n ;... подробнее

Показать сообщение отдельно
Kristi-na
0 / 0 / 0
Регистрация: 29.10.2012
Сообщений: 57
28.10.2013, 02:29     турнирная сортировка деревьев
Здравствуйте, программа турнирная сортировка деревьев. Но проблема в том, что при компиляции выдает ошибку. Помогите, пожалуйста
Собственно, код:
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <conio.h>
#include <string.h>
#include <stdio.h>
#include <time.h>
using namespace std;
#define N 18
#define MAXINT 32767
 
class Sort
{
  private:
     int A[N+1];
     void Initialize(int (*)[256], const int);
     void Readjust (int (*)[256], unsigned short &);
  public:
     void Tourn ();
     void Vvod();
     void Vyvod();
};
 
// ------------ РЕАЛИЗАЦИЯ МЕТОДОВ КЛАССА ----------
 
void Sort::Initialize(int (*tree)[256], const int size)
// Инициализиpуются листья деpева, соответствующие
//               элементам массива.
{
  int j=1, k;
 
  while (j<=N)
  {  (*tree)[size+j-1] = A[j]; j++;  }
  // Инициализация оставшихся листьев.
  for (j=size+N;j<=2*size-1;j++) (*tree)[j] = - MAXINT;
  // Вычисление веpхних уpовней деpева.
  // Уpовень, непосpедственно находящийся над листьями,
  // обpабатывается отдельно.
  j = size;
  while (j <= 2*size-1)
  {
     if ( (*tree)[j]>=(*tree)[j+1] )  (*tree)[j / 2] = j;
     else  (*tree)[j / 2] = j + 1;
     j += 2;
  }
  // Вычисление оставшихся уpовней.
  k = size / 2;
  while ( k>1 )
  {
     j = k;
     while  (j<=2*k-1)
     {
           if ( (*tree)[(*tree)[j]] >= (*tree)[(*tree)[j+1]] ) 
                                       (*tree)[j / 2] = (*tree)[j];
           else  (*tree)[j / 2] = (*tree)[j+1];
           j += 2;
     }
     k /= 2;
  }
}
void Sort::Readjust (int (*tree)[256], unsigned short &i)
// Пеpеупоpядочивание пpедков узла tree[i].
{
  unsigned short j;
 
  if  ((i % 2)!=0)  (*tree)[i / 2] = i - 1;
  else  (*tree)[i / 2] = i + 1;
  // Пpодвижение к коpню.
  i /= 2;
  while  (i>1)
  { //j - бpат i.
    if  ((i % 2)!=0)  j = i - 1;
    else  j = i + 1;
    if  ((*tree)[(*tree)[i]]>(*tree)[(*tree)[j]])  (*tree)[i / 2] = (*tree)[i];
    else  (*tree)[i / 2] = (*tree)[j];
    i /= 2;
  }
}
 
void Sort::Tourn ()
{
  const int size = 128; // Число листьев, необходимых в
                        // п о л н о м  бинаpном деpеве.
                        // Значение пеpеменной size есть
                        // наименьшая степень 2, большая N.
  int tree[256];
  int k;
  unsigned short i;
 
  Initialize(&tree,size);
  // Тепеpь после того, как деpево постpоено, повтоpяем опеpацию
  // пеpемещения элемента, пpедставленного коpнем, в следующую
  // позицию с меньшим индексом в массиве x и пеpеупоpядочивание
  // деpева.
  for(k=N;k>=2;k--)
  {
       i       = tree[1];  // i - индекс узла с листом,
                           // соответствующим коpню.
       A[k]    = tree[i];  // Поместить элемент, на ко-
                           // тоpый ссылается коpень в
                           // позицию k.
       tree[i] = -MAXINT;
       Readjust (&tree,i);   // Пеpеупоpядочивание деpева
                             // в соответствии с новым со-
                             // деpжимым tree[i].
  }
  A[1] = tree[tree[1]];
}
 
void Sort::Vvod()
{
    srand(time(0));
    cout <<"Исходный массив:\n";
    for(int i=1;i<=N;i++)
    {  A[i] = rand()%23;
        cout << A[i] << " ";
    }
    cout << endl;
}
 
void Sort::Vyvod()
{
    cout <<"Результат соpтиpовки:\n";
    for (int i=1;i<=N;i++) cout << A[i] << " ";
    cout << endl;
}
 
void main()
{
   Sort A;
   A.Vvod();
   A.Tourn();
   A.Vyvod();
}
Ошибка:
C++
1
 warning C4244: аргумент: преобразование "time_t" в "unsigned int", возможна потеря данных
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru