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

Очень срочно , через 2 дня сдача) (композиция, наследование) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Алгоритм перевода чисел http://www.cyberforum.ru/cpp-beginners/thread299277.html
Помогите пожалуйста! Надо мне написать алгоритм перевода из десятичного числа в 16 ричное число! Через стандартные функции не катит,и через указатели тоже! Он должен быть самым простым алгоритмом! Вот как реализовать это програмно: залаем с клавиатуры число,делим его на 16,записываем остаток,потом сравниваем если число равно от 1 до 10 то ничего не менять,а если больше 10 то записать букву! Что...
C++ Позиции Найти все натуральные числа не превосходящие n десятичная запись которых есть строго возрастающая или строго убывающая последовательность . Скажите мне пожалуйста как разбивать пробую с остатком ну чет не идет к меня . http://www.cyberforum.ru/cpp-beginners/thread299270.html
DrawGrid изменение размеров C++
Доброе время суток! Объясните мне пожалуйста как автоматически изменять высоту и длину (размеры) окна DrawGrid Моя задача состоит в решение матриц (любой размерности(в пределах разумного !>100)), с увеличение количества ячеек длина и высота не меняется должным образом. попробовал мудрить: void __fastcall TForm1::Button1Click(TObject *Sender) { a=StrToInt(Edit1->Text); if...
C++ Заполнить матрицу соответствии образцу
Заполнить матрицу соответствии образце Чистый Си
C++ Сортировка элементов массива по заданному критерию http://www.cyberforum.ru/cpp-beginners/thread299260.html
нужно написать программу работы с одномерным массивом (ввод \ вывод массива, помещение новых элементов в массив, удалениe элементов из массива, сортировка элементов массива по заданному критерию).
C++ Опять текстуры Я,наверное,всех уже достал с текстурами)Но всё же вот фрагменты кода рисовка цилиндра с текстурой glEnable(GL_TEXTURE_2D); barkn=0; glGenTextures(1, &barkn); glBindTexture(GL_TEXTURE_2D, barkn); glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glTexImage2D(GL_TEXTURE_2D, 0, 3, width, height, подробнее

Показать сообщение отдельно
lemegeton
 Аватар для lemegeton
2913 / 1342 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
19.05.2011, 17:29     Очень срочно , через 2 дня сдача) (композиция, наследование)
Цитата Сообщение от Alena1310 Посмотреть сообщение
Моделировать множество, в качестве элементов которого могут использоваться чис-ла и слова.
Как Вас учили моделировать множества? Бинарным деревом поиска, красно-черным деревом, упорядоченным массивом?

Добавлено через 1 минуту

Не по теме:

Что-то мне подсказывает, что вариант с красно-черным деревом можно сразу отбросить.



Добавлено через 7 часов 50 минут
Ну на тебе контейнер Set самопальный. Хз, как ты будешь в этом разбираться.

В общем-то наистандартнейшее бинарное дерево поиска. Скорость поиска O(log(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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
#include <iostream>
#include <vector>
 
// Well... U'd better use std::swap instead.
// but then you should use std::set, shouldn't you? ;)
template <class ValueType>
void swap(ValueType &a, ValueType &b) {
  ValueType c = a;
  a = b;
  b = c;
}
 
template <typename ValueType>
class Set {
 public:
  struct Node {
    Node *left;
    Node *right;
    ValueType key;
    Node() : left(NULL), right(NULL) {}
    explicit Node(const ValueType &value)
      : left(NULL), right(NULL), key(value) {}
  };
  Set() : root_(NULL), size_(0) {}
  ~Set() {
    Clear();
  }
  void Clear() {
    RecursiveFreeTree(&root_);
  }
  bool Has(const ValueType &value) {
    return *NonRecursiveFind(&root_, value);
  }
  void Insert(const ValueType &value) {
    NonRecursiveInsert(&root_, value);
  }
  void Remove(const ValueType &value) {
    Node **node = NonRecursiveFind(&root_, value);
    if (*node != NULL)
      RecursiveRemoveNode(node);
  }
  std::ostream &Print(std::ostream &stream) {
    return RecursiveOrderedPrint(&root_, stream);
  }
  template <class Container>
  Container &ToContainer(Container &container) {
    RecursiveToContainer(&root_, container);
    return container;
  }
 protected:
  template <class Container>
  Container &RecursiveToContainer(Node **node, Container &container) {
    if (*node != NULL) {
      RecursiveToContainer(&(*node)->right, container);
      container.push_back((*node)->key);
      RecursiveToContainer(&(*node)->left, container);
    }
    return container;
  }
  void RecursiveRemoveNode(Node **node) {
    Node *this_node = *node;
    if ((*node)->left == NULL) {
      *node = (*node)->right;
      delete this_node;
    } else if ((*node)->right == NULL) {
      *node = (*node)->left;
      delete this_node;
    } else {
      Node **pred = &(*node)->left;
      while ((*pred)->right != NULL)
        pred = &(*pred)->right;
      swap((*pred)->key, (*node)->key);
      RecursiveRemoveNode(pred);
    }
  }
  std::ostream &RecursiveOrderedPrint(Node **root, std::ostream &stream) {
    if (*root != NULL) {
      RecursiveOrderedPrint(&(*root)->right, stream);
      stream << (*root)->key << " ";
      RecursiveOrderedPrint(&(*root)->left, stream);
    }
    return stream;
  }
  Node **NonRecursiveFind(Node **root, const ValueType &value) {
    while (*root != NULL) {
      if (value < (*root)->key)
        root = &(*root)->left;
      else
      if ((*root)->key < value)
        root = &(*root)->right;
      else
        break;
    }
    return root;
  }
  void NonRecursiveInsert(Node **root, const ValueType &value) {
    while (*root != NULL) {
      if (value < (*root)->key)
        root = &(*root)->left;
      else
      if ((*root)->key < value)
        root = &(*root)->right;
      else
        return;
    }
    *root = new Node(value);
  }
  void RecursiveFreeTree(Node **root) {
    if (*root != NULL) {
      RecursiveFreeTree(&(*root)->left);
      RecursiveFreeTree(&(*root)->right);
      delete *root;
      *root = NULL;
      --size_;
    }
  }
  Node *root_;
  size_t size_;
 private:
  Set(const Set &other);
  Set &operator=(const Set &other);
};
 
class MoreSet: public Set<int> {
 public:
  int Multiplied() {
    std::vector<int> array;
    ToContainer(array);
    int result = 1;
    for (size_t i = 0; i < array.size(); ++i)
      result *= array[i];
    return result;
  }
};
 
int main(int argc, char *argv[]) {
  MoreSet bst;
  bst.Insert(8);
  bst.Insert(4);
  bst.Insert(6);
  bst.Insert(2);
  bst.Insert(3);
  bst.Insert(1);
 
  bst.Print(std::cout);
  std::cout << std::endl;
 
  if (bst.Has(4))
    bst.Remove(4);
 
  std::vector<int> result;
  bst.ToContainer(result);
 
  bst.Print(std::cout);
  std::cout << std::endl;
  
  std::cout << bst.Multiplied() << std::endl;
}
 
Текущее время: 01:09. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru