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

Бинарные деревья - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Программа на С http://www.cyberforum.ru/cpp-beginners/thread306356.html
Доброго времени суток. Помогите пожалуйста с программкой на C Задача такая: Создать программу которая содержит динамическую информацию про наличие автобусов в авто. парке. Ведомость про каждый автобус содержит: номер автобус , ФИО водителя , номер маршрута. Програма должна обеспечивать: - первичную формировку данных про все автобусы в виде списка. - при выезде автобуса из парка вводиться...
C++ Динамические массивы структур;Классы. Класс массивы структур;Классы. Класс динамического массива структур. Здраствуйте.Помогите с практичкой мое задание 4.3. Строка таблицы данных содержит следующую информацию о владельцах авто: ф.и.о. владельца, марка авто, год выпуска, страна производитель. Требуется найти: 4.3.1) перечень владельцев с указанием числа их авто; в методичках указаны шаблоны. Огромное Спасибо за помощь! http://www.cyberforum.ru/cpp-beginners/thread306352.html
C++ неправильное значение переменной
вот код #include "stdafx.h" #include <cstdlib> #include <iostream> #include <cmath> using namespace std; int _tmain(int argc, _TCHAR* argv){ setlocale(LC_CTYPE,"rus"); int m,n,koeff,a; cout<<"Введите степень уравнения ";
C++ Абракадабровый C++
Вся проблема в чём - при вводе на русском я пишу какой-то абракадброй вроде иероглифов. Следствие установило, что эта хрень начинается после цикла do. Вот сам код, чистый консольный проект вин32: #include <iostream> #include <conio.h> using namespace std; enum itsaWord { NO, YES }; int main() { setlocale(0,""); itsaWord isWord=NO; char ch='a';
C++ Программа удаляет из строки слово с заданным номером. http://www.cyberforum.ru/cpp-beginners/thread306298.html
Помогите! нужно написать программу на "С". "Программа удаляет из строки слово с заданным номером!"(как объяснял преподаватель например 2 строки "скоро курсовая работа(20 символов в этой строке) пользователь задает удалить например 2 слово 6-14 символ, программа должна вывести скоро работа") Заранее спасибо.
C++ Расчетно-графическая работа Помогите пожалуйста. Необходимо написать расчетно-графическую работу которая будет состоять из: 1) заставки(любая картинка или несложная анимация) 2) и программы Задание по программе: построить кривые по заданному параметрическому представлению улитка Паскаля x=a*(cos(t))^2 + b*(cos(t)) y=b*cos(t)*sin(t) + b*(sin(t)); a>0, b>0, t принадлежит Рассмотреть... подробнее

Показать сообщение отдельно
kjahert
48 / 48 / 5
Регистрация: 08.04.2011
Сообщений: 124
27.05.2011, 18:05     Бинарные деревья
Есть примеры классов и структур деревьев
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
#include<iostream.h>
#include <alloc.h>
#include<math.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
 
class elem
 {
  public:
  int number;//room
  char FIO[40];
  int info[4];
  elem *left;
  elem *right;
 };
elem  AddNode(elem **root, int number,char FF[40],int infoo[4]);
void PrintTree(elem **root);
void SearchNode(elem **root);
void DelNode(elem **root);
void Del(elem **root, elem **rootl);
void Print(elem **root,int y,int x);
 
void main()
{ elem *root=NULL;
  elem *cons=NULL;
  int num,count;
  char F[40];
  int info[4];
  clrscr();
  cout<<"‚ўҐ¤ЁвҐ Є®«ЁзҐбвў® §*ЇЁбҐ©:\t";
  cin>>count;
  for (int i=1;i<=count;i++)
    {
    cout<<"‚ўҐ¤ЁвҐ *®¬Ґа бв㤥*в*:\n";
    cin>>num;
    cout<<"”.?.Ћ.:\n";
    cin>>F;
    cout<<"‚ўҐ¤ЁвҐ ®жҐ*ЄЁ(2-5):\n";
    for(int i=0;i<=3;i++)
    cin>>info[i];
    root=&AddNode(&root,num,F,info);
    }
  cout<<"„ҐаҐў®:"<<endl;
  cons=root;
  clrscr();
  Print(&root,10,20);
  getchar();
  root=cons;
  for ( i=1;i<=count;i++)
  DelNode(&root);
  clrscr();
  gotoxy(10,30);
  cout<<endl<<"ђҐ§г«мв*в:\n";
  Print(&root,10,20);
   getchar();
}
 
elem AddNode(elem **root, int number,char FF[40],int infoo[4])
{ if(*root==NULL)
   {
     *root=new elem;
     (*root)->number=number;
     for(int j=0;j<=3;j++)
     ((*root)->info)[j]=infoo[j];
     strcpy(((*root)->FIO),FF);
     (*root)->left=NULL;
     (*root)->right=NULL;
   }
    else
     if ((*root)->number>number)
      (*(*root)->left)=AddNode(&(*root)->left,number, FF,infoo);
     else
     if ((*root)->number<number)
      (* (*root)->right)=AddNode(&(*root)->right,number,FF,infoo);
return **root;
}
 
void DelNode(elem **root)
{int b=0;
      if ((*root)!=NULL)
    {
     for (int i=0;i<=3;i++ )
     { if (((*root)->info)[i]==5)
     b++;
     else  b=1;
     }
     if (b==4)
          { DelNode(&((*root)->left));
          DelNode(&((*root)->right));
        }
      else
        {
          elem *old=*root;
          if ((*root)->right==NULL)
           {
           *root=(*root)->left;
        delete old;
           }
           else
           if ((*root)->left==NULL)
        {
         *root=(*root)->right;
         delete old;
        }
        else
          Del(&old,&(*root)->left);
         }
      }
}
void Del(elem **root, elem **rootl)
{
   elem *old=new elem;
   if ((*rootl)->right==NULL)
    {
     (*root)->number=(*rootl)->number;
     old=*rootl;
     (*rootl)=(*rootl)->left;
     delete old;
    }
   else
   Del(&(*root),&((*root)->right));
}
 
void Print(elem **root,int y,int x)
 {if (*root != NULL){
    gotoxy(10+x,y);
    if ((*root)->left != NULL) cout << "/ {";
      else cout << " {";
    cout << (*root)->FIO<<": ";
     for (int i=0;i<=3;i++)
      cout<<((*root)->info)[i] ;
    if ((*root)->right != NULL) cout << "} \\";
       else cout << "} ";
    Print(&(*root)->left, y + 2, x - 6);
    Print(&(*root)->right, y + 2, x + 6);
}
    }
Структуры
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
//Tree
#include <iostream.h>
 
struct node{
 int d;
 node *left;
 node *right;
};
node * first(int d);
node * search_insert(node *root, int d);
void print_tree(node *root, int l);
//----------------------------------------------------
void main()
{
    int n, i, what;
    cout<<"input n \n";
    cin>>n;
    cout<<"input first what \n";
    cin>>what;
    node *root = first(what);
    for (i = 1; i<n; i++)
    {
    cout<<"input what \n";
    cin>>what;
    search_insert(root, what);
    }
    print_tree(root, 0);
 
}
//-----------------------------------------------------
node * first(int d)
{
    node *pv = new node;
    pv->d    = d;
    pv->left = 0;
    pv->right = 0;
    return pv;
}
//------------------------------------------------------
node * search_insert(node *root, int d)
{
    node *pv = root, *prev;
    int found = 0;
    while (pv && !found){
       prev = pv;
       if   (d == pv->d) found = 1;
       else if  (d <  pv->d)pv     = pv->left;
       else         pv     = pv->right;
    }
    if (found) return pv;
    node *pnew  = new node;
    pnew->d     = d;
    pnew->left  = 0;
    pnew->right = 0;
    if (d < prev->d)
       prev->left  = pnew;
    else
       prev->right = pnew;
    return pnew;
}
//-------------------------------------------------------
void print_tree(node *p, int level)
{
    if (p)
    {
    print_tree(p->left, level+1);
    for (int i = 0; i<level; i++)
    cout << "    ";
    cout <<  p->d << endl;
    print_tree(p->right, level + 1);
    }
}
Соответственно структуры легко переделать в классы

Цитата Сообщение от Student100 Посмотреть сообщение
вещественные числа, двоичные строки и линейные многочлены
Можно всё сделать в одном классе(структуре) а не в трёх

Сравнение строковых переменных в лексикограф. порядке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
node *AddNode(node *root,char FIO[40],char info[15],char p[20])
{ if(root==0)
   {
     root=new node;
     strcpy((root->FIO),FIO);
     strcpy((root->string),info);
     strcpy((root->pr),p);
     root->left=0;
     root->right=0;
   }
    else
     if(strcmp (root->FIO,FIO)<0)
      root->left=AddNode(root->left,FIO,info,p);
     else
     if (strcmp (root->FIO,FIO)>0)
      root->right=AddNode(root->right,FIO,info,p);
return root;
}
 
Текущее время: 21:01. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru