Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 361

Раздел: Delphi » Прочее
/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Кто-нибудь может помочь перевести код из C++(вроде он, я не знаю в нем ничего) в Delphi?

Приложение:
  1. private:
  2. link insertR (link h,
  3. { Key v = x.key();
  4. if ((h->bit >= d)
  5. Item x, int d, link p)
  6. || (h->bit <= p->bit))
  7. {
  8.  
  9. t->l = (digit (v, t->bit) ? h : t) ;
  10. t->r = (digit (v, t->bit) ? t : h) ;
  11. return t; }
  12. if (digit (v, h->bit) = 0)
  13. h->l = insertR(h->l, x, d, h) ;
  14. else h->r = insertR(h->r, x, d, h) ;
  15. return h;
  16. }
  17. public:
  18. void insert (Item x)
  19. { Key v = x. key () ; int i ;
  20. Key w = searchR (head->l, v, -1) . key() ;
  21. if (v = w) return;
  22. for (i = 0; digit(v, i) = digit(w, i) ;
  23. head->l = insertR(head->l, x, i, head);
  24. }
  25. ST(int maxN)
  26. { head = new node (nullItem) ;
  27. head->l = head->r = head; }


NeStor Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: NeStor (статус: Посетитель)
Вопрос отправлен: 1 июня 2011, 20:49
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 13; последнее сообщение — 5 июня 2011, 09:39; участников в обсуждении: 5.
NeStor

NeStor (статус: Посетитель), 1 июня 2011, 20:52 [#1]:

фрагмент кода осуществляет вставку элемента в patricia-дерево
min@y™

min@y™ (статус: Доктор наук), 1 июня 2011, 20:55 [#2]:

А нахрена переводить-то? Проще ж по алгоритму просто новый код на паскале написать и всё.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
NeStor

NeStor (статус: Посетитель), 1 июня 2011, 21:00 [#3]:

я в некоторые операции совершенно не вникаю. никогда с С++ не работал. ща сижу ищу материал что там чего означает
min@y™

min@y™ (статус: Доктор наук), 1 июня 2011, 21:19 [#4]:

Цитата (NeStor):

я в некоторые операции совершенно не вникаю. никогда с С++ не работал. ща сижу ищу материал что там чего означает

Чтобы написать что-то на паскале, не надо в С++ вникать. Надо:
а) входные данные;
б) что и как из них получить на выходе;
ц) прямые руки и мозги.
Всё.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
NeStor

NeStor (статус: Посетитель), 1 июня 2011, 21:30 [#5]:

это само собой. тогда пару вопросов, чисто для полного понимания алгоритма.
1) что такое Link и Item?
2) || - это and? или что?
3) link t « new node(x); t->bit = d;
t->l = (digit (v, t->bit) ? h : t) ; - вот здесь вот что вообще происходит? что там за знак вопроса?

прости за тупые вопросы, просто реально не славливаю
NeStor

NeStor (статус: Посетитель), 1 июня 2011, 21:35 [#6]:

хотя про знак вопроса я уже посмотрел. мож и другие разберу тогда
NeStor

NeStor (статус: Посетитель), 1 июня 2011, 22:16 [#7]:

не, нефига не понятно
min@y™

min@y™ (статус: Доктор наук), 1 июня 2011, 22:35 [#8]:

Цитата (NeStor):

1) что такое Link и Item?

Link - это какой-то юзерский тип данных.
Item - тоже тип. Похоже, что это узел дерева

Цитата (NeStor):

2) || - это and? или что?

Это логический "or" (не путать с побитовым).

Цитата (NeStor):

3) link t « new node(x); t->bit = d; t->l = (digit (v, t->bit) ? h : t) ; - вот здесь вот что вообще происходит? что там за знак вопроса?

Здесь символ "«" надо бы заменить на "=", т.к. идёт вызов конструктора и присвоение указателя (я так предполагаю).

Дальше влом разбираться.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
NeStor

NeStor (статус: Посетитель), 1 июня 2011, 22:48 [#9]:

спасибо и на этом. дальше сам как-нибудь
Вадим К

Вадим К (статус: Академик), 2 июня 2011, 10:53 [#10]:

знак вопроса - это условный тернарный оператор.
выражение вида
x = a?b:c;
эквивалентно такому на делфи
if a then x := b else x := c;
или, если подключить модуль Math
x := IfThen(a, b, c);
Галочка "подтверждения прочтения" - вселенское зло.
NeStor

NeStor (статус: Посетитель), 2 июня 2011, 11:04 [#11]:

спасибо, а
private:
link insertR (link h, Item x, int d, link p)
{ Key v = x.key(); а это типа начало процедуры или функции?
Толяныч

Толяныч (статус: 4-ый класс), 3 июня 2011, 01:26 [#12]:

Вадим К:
>знак вопроса - это условный тернарный оператор.
> выражение вида
> x = a?b:c;
> эквивалентно такому на делфи
> if a then x := b else x := c;

Когда программил на С, недолюбливал эту конструкцию и никогда ее не использовал. Мне в ней чудится что-то противоестественное, как хоккей на траве.
Егор

Егор (статус: 10-ый класс), 5 июня 2011, 09:39 [#13]:

Цитата (NeStor):

link insertR (link h, Item x, int d, link p)
{ Key v = x.key(); а это типа начало процедуры или функции?
в с/с++ нет процедур, только функции. в данном случае функция возвращает значение типа link

Цитата (Толяныч):

Когда программил на С, недолюбливал эту конструкцию и никогда ее не использовал. Мне в ней чудится что-то противоестественное, как хоккей на траве.
чудесная конструкция. а в некоторых случаях вообще единственно возможная, без альтернатив.
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:31
Выполнено за 0.03 сек.