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

работа с кучей - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ создать класс triangle , содержащий следующие члены класса http://www.cyberforum.ru/cpp-beginners/thread877438.html
1. Поля int a , b , c; 2. Функции , позволяющие : - вывести на экран информацию о треугольнике ;-рассчитать периметр треугольника; - рассчитать площадь треугольника . - установить длины; сторон...
C++ Напишите пожалуйста код для этой темы пожалуйста напишите код. Желательно в программе Visual Studio c++. Тема:Разработка программного модуля вставки строки заданной длины, содержащую хотя бы один перенос, в текстовый файл. http://www.cyberforum.ru/cpp-beginners/thread877433.html
C++ Обработка одномерных числовых массивов функцией
Сделать функцией. Задан массив целых чисел. Вывести на экран два массива, элементами первого массива являются четные элементы исходного массива, элементами второго - нечетные.
C++ Алгоритмы комбинаторики(размещение без повторений). Решение числового ребуса
Доброго времени суток. Есть у меня числовой ребус, который надо решить. Код нам давали от паскаля (при надобности могу тоже перепечатать), через рекурсию. При объяснении задания определили, что...
C++ Поле шахматной доски определяется парой натуральных чисел http://www.cyberforum.ru/cpp-beginners/thread877407.html
1.Поле шахматной доски определяется парой натуральных чисел, первое из которых задает номер вертикали, а второе — номер горизонтали. Даны натуральные числа k, I, т, n. Требуется выяснить, угрожает ли...
C++ Задача с целочисленной квадратной матрицы (Упорядочить строки, найти сумму элементов) Дана целочисленная квадратная матрица. 1) Упорядочить ее строки по не убыванию их наибольших элементов. 2) Сумму элементов, оба индекса которых четные. подробнее

Показать сообщение отдельно
AlexProg
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 52

работа с кучей - C++

24.05.2013, 20:43. Просмотров 379. Ответов 0
Метки (Все метки)

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
написать кучу и написать функцию добавления к i-ому эллементу k-значения 
#include<cstdio>
#include<iostream>
#include<clocale>
#include<cstdlib>
using namespace std;
typedef struct ITEM{
    int key;
   };
class HEAP{
public:
    ITEM *h;
    int size;
    HEAP(unsigned int x){
    size=0;
    h = (ITEM*) malloc(sizeof(ITEM)*x);
    }
    ~HEAP(){
    if(h !=NULL)
      {
          free(h);
      }
    }
    int add(ITEM x) {
       h[++size]=x;
       checkdown(size);
       return 1;
    }
    int extract_min(ITEM *x)
    {
        if(size==NULL)
        {
            return 0;
        }
        *x=h[1];
        h[1]=h[size--];
        checkdown(1);
        return 1;
    }
    void chekup(int c){
       int p;
       p=c/2;
       if(p==0)return ;
       if(h[p].key==h[c].key)
       {
           ITEM tmp;
           tmp = h[p];
           h[p]=h[c];
           h[c]=tmp;
           chekup(p);
       }
    }
    void checkdown(int p)
    {
        int c;
        c=2*p;
        if(c>size)return ;
        if(c+1<=size && h[c+1].key<h[c].key)
        {
            c++;
        }
        if(h[c].key<h[p].key)
        {
            swap(h[c].key,h[p].key);
            chekup(c);
        }
    }
    void input(int k)
    {
        cout<<"\n"<<h[k].key;
    }
   void add_number(int n)
        {
            
            for(int i=0;i<n;++i)
          {
            int k,y;
            cout<<"введите два числа "<<endl;
            cin>>k>>y;
            h[k].key+y;
            checkdown(k);
          }
    }
};
int main() {
    setlocale(LC_CTYPE,"russian");
    HEAP heap(1000);
    int n, i;
    ITEM x;
    
    scanf("%d", &n);
    
    for(i = 0; i < n; i++){
       scanf("%d", &x.key);
       heap.add(x);
       heap.add_number(2);
    }
    
    
    
    while( heap.extract_min(&x) ) {
       printf("%d ", x.key);
    }
    heap.input(1);[CPP][CPP]
[/CPP]
system("pause");
return 0;
}

[/CPP]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru