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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу которая находит файлы, созданные в нерабочее время http://www.cyberforum.ru/cpp-beginners/thread430626.html
Написать программу которая находит фаайлы, созданные в нерабочее время. Понятия не имею как такое сделать, знаю как искать файлы, но в нерабочее время понятия не имею как... Наверно файлы которые...
C++ Сформировать строку вдвое большей длины, где каждый символ дополняется пробелом Задание: ввести строку символов. Сформировать строку вдвое большей длины, где каждый символ предворяется пробелом. Вывести полученную строку. Вот код программы: #include <conio.h> #include... http://www.cyberforum.ru/cpp-beginners/thread430624.html
Как ограничить доступ к внешним устройствам и не только C++
Руководство компании поставило задачу по информационной безопасности компании: ограничить доступ сотрудников к USB портам, Wi Fi и Bluetooth, дисководам и приводам рабочих компьютеров, но не всем все...
Глюк системы или кривой код? C++
Программа должна быть сдана уже завтра, но работать нормально она отказывается. Сделана и тестируется через VS 2008. Проблема такова: При запуске программы в режиме "запуска без отладки"...
C++ Чем можно заменить выражение b=SQEARE(4,5+2,5)? http://www.cyberforum.ru/cpp-beginners/thread430600.html
Объясните, пожалуйста, что это за функция
C++ Visual studio 2008 C++ Вычислите сумму элементов верхнего правого треугольника матрицы и количество элементов в нем. матрица размером 5x5 подробнее

Показать сообщение отдельно
Rena
0 / 0 / 0
Регистрация: 15.01.2012
Сообщений: 9

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

18.01.2012, 17:41. Просмотров 1065. Ответов 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
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
135
136
137
138
139
140
141
142
143
144
// kucha.cpp: главный файл проекта.
 
 
 
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int kol=0;
struct heap
{ int p; char s[10];};
heap mas[20];
void outputheap ();
void inputheap();
void sort(int g);
void seakheap();
void delheap();
void del0();
 
 
void outputheap ()
{ int i=1,j; float k=1;
cout<<mas[0].p<<":"<<mas[0].s<<endl;
while (i<=kol)
{
 for (j=1;j<=pow(2,k) && kol>=i;j++)
 {cout<<mas[i].p<<":"<<mas[i].s<<"\t";i++;} k++;
 
 cout<<endl;}
}
 
void inputheap()
{ cin>>mas[kol].p>>mas[kol].s;
if (kol!=0) sort(kol);
kol++;
}
 
void sort(int g)
{ int i;
if (g%2==0)
i=(g-2)/2;
else i=(g-1)/2;
if (mas[g].p>mas[i].p)
{heap c=mas[g];
mas[g]=mas[i];
mas[i]=c;
g=i; 
sort(g);}
}
 
void seakheap()
{ char s2[10];
cin>>s2;
int i;
for(i=0; i<=kol; i++)
if (strcmp(s2, mas[i].s)==0)
cout<<i<<":"<<mas[i].p<<"-"<<mas[i].s<<endl;
}
 
void delheap()
{char s2[10];
int i,g;
cin>>s2;
for (i=0; i<=kol; i++)
if (strcmp(s2,mas[i].s)==0)
{
 
for (g=i+1;g<kol;g++)
mas[g-1]=mas[g];
kol--;
}
else
cout<<"\n now"<<endl;
if (i==kol)
kol=kol-1; 
else 
 
 if ((mas[2*i+1].p==mas[2*i+2].p)&& (mas[2*i+2].p==0))
 { mas[i]=mas[i+1];
 del0 ();
 }
 
 if (mas[2*i+2].p>0)
 { mas[2*i+2].p=0; sort (2*i+1);
 del0 ();
 }
 
 else 
  if (mas[2*i+2].p>0)
  {
   mas[i]=mas[2*i+2];
 mas[2*i+2].p=0; 
 sort (2*i+2);
 del0 ();
 }
}
 void del0()
 { 
  int i=0;
  for (i=0; i<=kol-1; i++)
   if (mas[i].p==0)
   {
    for (int j=i+1; j<=kol; j++)
    { mas[j-1]=mas[j]; sort(j);
    }
mas[kol].p=0;
kol--;
   }
 }
 
void main ()
{
 kol=0;
 for (int i=0;i<20;i++) mas[i].p=0;
 int f=0;
 
 while (f==0)
 {
  inputheap();
  cout<<"nazmite 1 esli xotite vyiti";
  cin>>f;
 }
 cout<<"\n kucha"<<endl;
 outputheap ();
 cout<<"\n poisk:"<<endl;
 seakheap ();
 cout<<"\n delete:"<<endl;
 delheap ();
    del0();
 outputheap ();
 system ("pause");
}
void insertsort(int i,int mas[20])
{
 int k,j,temp;
 for (k=0;k<i;k++)
 {
  temp=mas[k];
  for (j=k-1;j>=0 && mas[j]>temp;j--)
   mas[j+1]=mas[j];
  mas[j+1]=temp;
 }
}
 Комментарий модератора 
Именуйте темы осмысленно!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru