Форум программистов, компьютерный форум 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. Требуется выяснить, угрожает ли ферзь, стоящий на поле .(k, l), полю (т, n). Буду очень признателен...
C++ Задача с целочисленной квадратной матрицы (Упорядочить строки, найти сумму элементов) Дана целочисленная квадратная матрица. 1) Упорядочить ее строки по не убыванию их наибольших элементов. 2) Сумму элементов, оба индекса которых четные. подробнее

Показать сообщение отдельно
AlexProg
1 / 1 / 0
Регистрация: 03.11.2012
Сообщений: 52
24.05.2013, 20:43     работа с кучей
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]
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:38. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru