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

Нужно 2 кода слепить в кучу (деревья) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выпуклость фигуры http://www.cyberforum.ru/cpp-beginners/thread715863.html
Здравствуйте,возникла проблема с нахождением косинуса между векторами и в следствии самого угла #include<iostream.h> #include<math.h> #include<string.h> void main() {double x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,A,B,C,D,E,AB,BC,CD,DE,AE,yg1,yg2,yg3,yg4,yg5,M_PI; M_PI=3.14; A=(x0,y0); B=(x1,y1); C=(x2,y2);
C++ Умножение матриц Помогите умножить 2 матрицы размерностью 4х4, нужно создать ф-ю. Я пробовал, не получилось.. typedef int mat44; void mult_mat4(mat44 factor1, mat44 factor2, mat44 result) { printf("\n"); for(int i = 0; i < 4; i++) { printf("i=%i\n", i); for(int j = 0; j < 4; j++) { http://www.cyberforum.ru/cpp-beginners/thread715830.html
Вывести на экран таблицу значений функции Y(x)... C++
Вывести на экран таблицу значений функции Y(x) и ее разложения в ряд S(x) для x, изменяющегося от a до b с шагом с шагом h=(b– a)/10,
C++ Вызов функции одного класа в другом
Доброго времени суток всем!:) Столкнулся с такой проблемой, не судите строго, только начал изучать ООП и тут возникла трабла... Есть 2 класса CTelephonNumber и COutTownZvonok. В CTelephonNumber нужно вызвать функцию-член из COutTownZvonok. Нашел в интернете информацию, но что-то выдает ошибку... Вот код: double CTelephonNumber::Max_L() { typedef bool...
C++ Функции стандартной библиотеки для отображения одной системы счисления в другую http://www.cyberforum.ru/cpp-beginners/thread715818.html
Вопрос заключается в том, существует ли в стандартной библиотеки функции типа atoi(), но для 2-8-16 ричной системы? И наоборот, которые преобразовывают значение 2-8-16 ричной системы в соответствующую строку символов?
C++ Произвести математические операции над матрицами Помогите пожалуйста! Дано квадратную матрицу А порядка n и вектор b с n елементами. Получить: а) (А^2) x b б) (A-E) × b Где Е - единичная матрица порядка n. Зарание спасибо! подробнее

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

Нужно 2 кода слепить в кучу (деревья) - C++

02.12.2012, 01:47. Просмотров 311. Ответов 6
Метки (Все метки)

нужно 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
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
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <conio.h>
 
#define N 2 //Размер массива в дереве
 
// Элемент дерева.
struct tree
{
int s[N]; //Массив целых чисел.
  int count; //Число занятых элементов в массиве 's'.
tree *left; //Указатель на левый потомок дерева
  tree *right; //Указатель на правый потомок дерева.
};
 
//Прототипы функций и глобальные переменные.
 
void About(void);
void printsk (char* format,...);
int menu_select(void); /* Выбор пункта меню. */
void enter(struct tree *usel); /* Ввод числа. */
void show(struct tree *usel); /* Вывод чисел на экран. */
void insert(int number, struct tree *usel);/* Вставка нового числа. */
struct tree *first(void); /* Создание вершины дерева. */
 
int main ()
{
About (); /* Вывод информации о программе и авторе. */
 
  struct tree *pbegin = first(); //создание пустой вершины дерева.
  /* Объявление используемых в программе локальных переменных. */
  char choice;
  /* Меню. */
for(;;) {
   choice = menu_select();
   switch(choice) {
     case 1: enter(pbegin); //Ввод числа
       break;
     case 2: show(pbegin); //Вывод чисел на экран
       break;
     case 3: exit(0); //Выход из программы.
   }
 }
 
  getchar(); /* Заглушка. */
return 0;
  /* Конец программы. */
}
 
/*-----------------------------------------------------------------------*/
/* Выбор пункта меню. */
int menu_select(void)
{
char s[50];
int c;
printsk("\n1. Ввод числа\n");
printsk("2. Вывод всех чисел на экран\n");
printsk("3. Выход\n");
do {
   printsk("\nВведите номер нужного пункта: ");
   scanf("%s",&s);
   c = atoi(s);
 } while(c<0 || c>3);
 return c;
}
 
/*-----------------------------------------------------------------------*/
/* Ввод строки */
void enter (struct tree *usel)
{
clrscr(); //Очистка экрана.
printsk ("Введите число: \n");
int num;
  scanf("%d", &num);
  insert (num, usel);
}
 
/*-----------------------------------------------------------------------*/
/* Создание вершины дерева. */
struct tree *first(void)
{
struct tree *pv = new struct tree;
  for (int j = 0; j < N; j++) pv->s[j]=0;
  pv->left = NULL;
  pv->right = NULL;
  pv->count = 0;
  return pv;
}
 
/*-----------------------------------------------------------------------*/
/* Вывод строк на экран. */
void show(struct tree *usel)
{
if(!usel) return;
  show(usel->left);
  if(usel->s[0]) for (int m = 0; m < usel->count; m++) printsk(" %d\n", usel->s[m]);
  show(usel->right);
}
 
/*-----------------------------------------------------------------------*/
/* Упорядоченная вставка нового числа в дерево */
void insert(int number, struct tree *usel)
{
//Если массив полностью пуст.
  if (usel->count == 0)
  {
usel->s[0] = number;
     usel->count = 1;
     return;
  }
 
  //Если массив полностью заполнен.
  if (usel->count == N)
  {
  //Если число из диапозона чисел в данном массиве.
     if (number > usel->s[0] && number <= usel->s[N-1])
     {
//То нужно вставить в текущий массив, а последнее рекурсивно в правую ветку.
        int temp = usel->s[N-1]; //Запоминаем последнее число из массива.
        //Ищем место вставки
        int k = 0;
        for (k = 0; k < N; k++) if (number <= usel->s[k]) break;
//Раздвигаем массив
        for (int temp_2 = N-1; temp_2 > k; temp_2--)
        usel->s[temp_2] = usel->s[temp_2-1];
        //Копируем число в массив.
        usel->s[k] = number;
        //Проверяем существуют ли ветки дерева, если нет, то создаем.
        if (usel->left == NULL)
        {
        usel->left = first();
           usel->right = first();
        }
        insert (temp, usel->right);
        return;
     }
     else
     { //Если не входит в диапозон чисел данного массива.
//Проверяем существуют ли ветки дерева, если нет, то создаем.
        if (usel->left == NULL)
        {
        usel->left = first();
           usel->right = first();
        }
      if (number <= usel->s[0]){ insert (number, usel->left); return;}
        if (number > usel->s[N-1]){ insert (number, usel->right); return;}
     }
  }
 
  //Если есть место в текущем массиве.
  if (usel->count < N)
  {
//Ищем место включения числа в массив.
     int m = 0;
     for (m = 0; m < usel->count; m++)
      if (number <= usel->s[m]) break;
     //Раздвигаем массив
     for (int v = usel->count; v > m; v--)
     usel->s[v] = usel->s[v-1];
     //Записываем 'number' в массив
     usel->s[m] = number;
     usel->count++;
     return;
  }
}
 
/*-----------------------------------------------------------------------*/
/* Преобразования кодовой таблицы для Windows */
void printsk (char* format,...)
{
char buf[100];
va_list ptr;
CharToOem(format,buf);
va_start(ptr,format);
vprintf(buf,ptr);
}
 
/* Функция выводит информацию и названии программы и ее авторе */
void About (void)
{
printsk("\n               Работа с деревьями   v.1.0\n\n");
printsk("Автор: \n");
printsk("Назначение: Упорядоченное дерево из целых чисел.\n");
}

и вот этот.....
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
#include <iostream>
#include <Windows.h>
#include <string>
 
class Translator
{
private:
    struct Node
    {
        Node(std::string const& rus, std::string const& eng) :
            pl(0), pr(0), rus_(rus), eng_(eng){}
        Node* Insert(std::string const& rus, std::string const& eng)
        {
            Node* pret = 0;
            if(rus < rus_)
            {
                if(!pl)
                {
                    pl = new Node(rus, eng);
                    pret = pl;
                }
                else
                {
                    pret = pl->Insert(rus, eng);
                }
            }
            else if(rus > rus_)
            {
                if(!pr)
                {
                    pr = new Node(rus, eng);
                    pret = pr;
                }
                else
                {
                    pret = pr->Insert(rus, eng);
                }
            }
            return pret;
        }
        std::string GetEng(std::string const& rus)
        {
            std::string sret;
            if(rus == rus_)
                sret = eng_;
            else if(rus < rus_)
            {
                if(pl)
                    sret = pl->GetEng(rus);
            }
            else
            {
                if(pr)
                    sret = pr->GetEng(rus);
            }
            return sret;
        }
        void Cleanup()
        {
            if(pl)
            {
                pl->Cleanup();
                pl = 0;
            }
            if(pr)
            {
                pr->Cleanup();
                pr = 0;
            }
            delete this;
        }
        std::string rus_, eng_;
        Node* pl, *pr;
    };
public:
    Translator() : p_(0){}
    Node* Insert(std::string const& s1, std::string const& s2)
    {
        Node* pret = 0;
        if((s1[0] > 0 && s2[0] < 0) || (s1[0] < 0 && s2[0] > 0))
        {
            std::string const& rus(s1[0] < 0 ? s1 : s2);
            std::string const& eng(s1[0] > 0 ? s1 : s2);
            if(!p_)
            {
                p_ = new Node(rus, eng);
                pret = p_;
            }
            else
            {
                pret = p_->Insert(rus, eng);
            }
        }
        return pret;
    }
    std::string GetEng(std::string const& rus) const
    {
        std::string sret;
        if(p_)
        {
            sret = p_->GetEng(rus);
        }
        return sret;
    }
    void Cleanup()
    {
        if(p_)
        {
            p_->Cleanup();
            p_ = 0;
        }
    }
private:
    Node* p_;
    Translator(Translator const&);
    Translator& operator=(Translator);
};
 
int main()
{
    SetConsoleOutputCP(1251);
    Translator d;
    d.Insert("красный", "red");
    d.Insert("black", "чёрный");
    d.Insert("зелёный", "green");
    d.Insert("white", "белый");
    std::cout << d.GetEng("красный") << std::endl;
    std::cout << d.GetEng("чёрный") << std::endl;
    std::cout << d.GetEng("серый") << std::endl;
    std::cout << d.GetEng("красный") << std::endl;
    std::cout << d.GetEng("зелёный") << std::endl;
    d.Cleanup();
    std::cin.get();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru