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

Не знаю как правильно передать указатель - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Текстовый файл. Открыть, посчитать в нем количество английских и русских букв http://www.cyberforum.ru/cpp-beginners/thread765030.html
У меня есть текстовый фаил с русским и английским текстом, как мне открыть этот фаил в с++ (путь к нему как указывать правильно), и как посчитать в нем количество английских и русских букв?
C++ Заменить первые два нулевые элементы заданного вектора В на два первых НЕ нулевые элементы этого вектора Дано вектор В, состоящий из N действительных чисел. Заменить первые два нулевые элементы заданного вектора В на два первых НЕ нулевые элементы этого вектора. Напечатать заданный и образован вектор. http://www.cyberforum.ru/cpp-beginners/thread765029.html
C++ Дано матрицу A (3,4). Вывести номера столбцов и строк, где находится третий и пятый парные элементы этой матрицы
Дано матрицу A (3,4). Вывести номера столбцов и строк, где находится третий и пятый парные элементы этой матрицы Добавлено через 25 минут По сути вот, но нужно немного подправить...Пожалуйста, если можете, помогите побыстрее :С #include <iostream> #include <conio.h> #include <stdlib.h> #include <time.h> #include <iomanip> #include <math.h>
C++ Двумерные векторы
При компиляции программы двумерного вектора, программа крашится. Может с двумерными векторами не правильно взаимодесйтвую? Если так, то как правильно? #include <iostream> #include <vector> using namespace std; #define M 3 #define N 3 void main(){
C++ Запись классов, структур в файл http://www.cyberforum.ru/cpp-beginners/thread765005.html
Подскажите как правильно, записывать и читать данные с файла, особенно если записываются данные разных типов) Работает но как то не всегда такая запись ofstream outf("file.txt",ios::binary); ifstream inf("file.txt",ios::binary); outf.write((char*)(&obj_class),sizeof(class));//запись inf.read((char*)(&obj_class),sizeof(class)); //чтение
C++ Почему не проходит обращение к структуре? #include <iostream> #include <string> using namespace std; int main() { const int size = 10; int z = 0; подробнее

Показать сообщение отдельно
AncinetHero
49 / 49 / 3
Регистрация: 22.05.2011
Сообщений: 326

Не знаю как правильно передать указатель - C++

17.01.2013, 23:41. Просмотров 419. Ответов 9
Метки (Все метки)

В общем для начала приложу код ( не пугайтесь , что придется много читать , из этого кода изучить нужно лишь 2 функции и данные структуры ) :
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
#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <bitset>
#include <set>
#include <map>
#include <vector>
#include <cmath>
#include <string>
#include <cstring>
#include <queue>
using namespace std;
 
#define FOR0(i,n) for( i = 0 ; i < n ; i++ )
#define FOR1(i,n) for( i = 1 ; i <= n ; i++ )
#define sys_p system( "pause" )
#define End return 0
#define pb push_back 
#define mp make_pair
 
typedef long long ll ;
 
ifstream Cin( "input.txt" );
ofstream Cout( "output.txt" );
 
struct Treap
{
       ll x ; 
       ll y ;
       
       Treap *Left ;
       Treap *Right ;
       
       Treap () { } ;
       Treap ( ll x, ll y ) : x(x), y(y) { } ;
       Treap ( ll x, ll y, Treap *l, Treap *r ) : x(x), y(y), Left(l), Right(r) { }
};
 
typedef Treap * PTreap  ;
 
void Merge( PTreap & ans, PTreap l, PTreap r )
{
      
      if( l == NULL )
        ans = r ;
      if( r == NULL )
        ans = r ;
      
      if( l->y >= r->y )
      {
          Merge( l->Right, l->Right, r ) ;
          ans = l ;
      }
      else
      {
          Merge( r->Left, l, r->Left ) ;
          ans = r ; 
      }
}
 
void Split( PTreap & l, PTreap & r, ll x, PTreap g ) 
{
     if( !g )
       l = r = NULL ;
     else if( x < g->x )
     {
         Split( l, g->Left, x, g->Left ) ;
         r = g ;
     }
     else
     {
         Split( g->Right, r, x, g->Right ) ;
         l = g ;
     }
}
 
void insert( PTreap & g, ll x )
{
     PTreap l, r ;
     Split( l, r, x, g ) ;
     PTreap New = new Treap( x, rand(), NULL, NULL ) ;
     Merge( l, l, New ) ;
     Merge( g, l, r ) ;
}
 
main()
{ 
      ll n, i ;
      Treap a ;
      cin >> n ;
      vector < ll > r(n) ;
      FOR0( i, n )
      {
        cin >> r[i] ;
        insert( a, r[i] ) ;
      }
        
}
Я создал структуру Treap - дерево. Создал тип данных - указатель на эту структуру - PTreap = * Treap . У меня есть функция void insert( PTreap & g, ll x ) , которая принимает указатель на мое дерево и число, которое я хочу засунуть в дерево, оно его туда засовывает и обновляет переданый ему указатель. Я гарантирую, что работа всех функций, относящихся к дереву, правильна, и ошибок нету.
В главной процедуре main я должен создать дерево, считать некоторые данные и засунуть их в это дерево.
Я не очень разбираюсь в указателях и совершенно запутался, как нужно передать это дерево функции insert , чтобы не было ошибок. Текущий код не компилируется, не знаю как правильно передать указатель на дерево, причем с возможностью его менять...
Очень нуждаюсь в помощи, спасибо !
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru