• Как рекурсивно записать из файла в бинарное дерево?

    @Mercury13
    А XML-документ разве не файл?
    Допустим, есть такое дерево.
    у него есть колёса?
      +: он пыхтит косячком?
        +: наркоман
        −: трактор
      −: кот

    В промышленном коде лучше всего либо XML, либо многоуровневая блочная структура, напоминающая XML.

    В учебном коде можно попроще: либо «Q вопрос узел+, узел−», либо «A ответ». То есть:
    Q
    у него есть колёса?
    Q
    он пыхтит косячком?
    A
    наркоман
    A
    трактор
    A
    кот


    Node* readNode(FILE* file)
    {
      char c[…];
      readLine(file, c);
      switch (c[0]) {
      case 'Q': {
          Node* node = malloc(…);
          readLine(file, node.text);
          Node.yes = readNode(file);
          Node.no = readNode(file);
          return node;
        }
        case 'A': {
          Node* node = malloc(…);
          readLine(file, node.text);
          Node.yes = NULL;
          Node.no = NULL;
          return node;
        }
        default: ; // ошибка
      }
    }

    Функцию readLine описывать не буду. Принцип легко переносится на двоичный файл. Хотя этот принцип не столь расширяем, как XML.
  • Как рекурсивно записать из файла в бинарное дерево?

    @Mercury13
    Ещё одна возможная задача: дерево — всего лишь индекс, а реально наши данные представляют собой линейный список.
  • Как рекурсивно записать из файла в бинарное дерево?

    @Mercury13
    Задача-то какая? Хранить деревяху в файле?
  • Как создать событие закрытия формы из другого Юнита?

    @Mercury13
    Andrey: А про создание я тоже дописал. Код Form3.Create(self); неверен.
  • Макет визитки в AI — делать в миллиметрах или пикселях?

    @Mercury13
    weranda: В том, что пиксель чему-то равен (например, 1/90"), и точно не миллиметру.
    Будут проблемы, когда будете экспортировать в формат, который требуют печатники.
    Да и на личном принтере 1:1 проверить будет тяжеловато.
  • Для чего нужно так много портов?

    @Mercury13
    Ingernirated:
    > У HTTP подобной привязки нет.
    Разумеется, надо придумать схему URL’а, чтобы было что-то типа modemhttp://1234567/index.html. Но к протоколу HTTP это никакого отношения не имеет.
    UPD. Есть кивок в адрес DNS и виртуального хостинга — поле Host:. Если нечто подобное проработать на телефонных модемах — и Host: тоже можно приплести.
  • Для чего нужно так много портов?

    @Mercury13
    Ingernirated: Вот хороший перевод статьи про марсианские наушники.
    rutlib2.com/book/25666/p/26
  • Для чего нужно так много портов?

    @Mercury13
    Ingernirated:
    > если серверный порт это 80, то какой порт на компе принимает от него данные?
    Решает клиентская TCP-подсистема.

    > и как так вышло, что скайпу вбили 80-ый порт по умолчанию, если знали, что это серверный порт?
    Просто забито в настройках по умолчанию. Видимо, посчитали, что этот порт часто пробрасывают.

    > но по сути, если скайп не запущен, сервер же будет работать?
    Разумеется. Если сервер запустили первым, обломается уже Скайп. Почему я говорю именно про Vertrigo — это тестовый HTTP-сервер, который пускают, когда надо что-то отладить.

    > просто странно, что в некоторых статьях описывали, как убрать скайп с 80 порта, а не просто не запускать его.
    И сервер нужен, и Скайп нужен. Просто у Скайпа это настраивается, но почему-то стоит по умолчанию вот такое безобразие. Особенно бесит, когда сервер говорит: кто-то слушает 80. А кто — непонятно.

    > а когда делают запрос на сайт, апач сам решает по какому протоколу будет щас происходить обмен данными?
    Читай статью Джоэла Спольского «Марсианские наушники», желательно в профессиональном переводе (в книге Спольского). Перевод на Хабре, к сожалению, слаб.
    Решают они вместе, и важная часть протокола — договориться, какой версией пользоваться.

    > а когда делают запрос на сайт, апач сам решает по какому протоколу будет щас происходить обмен данными?
    Это протоколы разного уровня: TCP — транспортный, HTTP — представления данных/прикладной. Причём никак друг с другом не связанные: TCP спроектирован так, что может работать только поверх IP. У HTTP подобной привязки нет.
    HTTP может быть (реально не бывает, но теоретически может) по модемной связи без всякого TCP.
    Поверх TCP можно сделать FTP, ICQ и многое что ещё.
  • Для чего нужно так много портов?

    @Mercury13
    Леха Ярков: Но там обсуждается другой вопрос: в Юниксе некоторые программы могут слушать порты 0…1023 только с админскими правами, как запустить Апача.
  • Для чего нужно так много портов?

    @Mercury13
    Ingernirated: Леха Ярков:
    Проброшенный порт — договорённость с охранником: всех, кто к токарю, провести. Про бутылку он, впрочем, умолчит: не его дело.

    UPnP — администратор гаражного кооператива, который мало того, что выдаст свободный гараж, так ещё и охранника проинструктирует.
  • Для чего нужно так много портов?

    @Mercury13
    Леха Ярков:
    Там же написано: Will use 3000 if available, otherwise fall back to a random port

    Это значит: если гараж 123 занят, мы селимся в соседний, например, 124.
    И сколько раз было: Vertrigo не запускается, потому что какой-нибудь паршивый Скайп без спроса решил прослушать 80-й порт.
  • Для чего нужно так много портов?

    @Mercury13
    Ingernirated:
    > задать ей порт, который уже использует другая программа
    Если хотя бы одна программа подключается (клиент) — всё будет работать как ни в чём не бывало.
    Если обе слушают (серверы) — вторая просто не сможет открыть порт на прослушивание.

    Точно так же мы вдвоём можем прийти с бутылками в гараж и рассчитывать, что токарь сделает деталь. А двух токарей в одном гараже быть не может. Точнее, могут, но согласованно (например, по общей договорённости или у одного работодателя), и дополнительная часть протокола — отличить одного токаря от другого. Или не надо отличать, мы разговаривает с администратором, который и раздаёт задания двум токарям…
  • Для чего нужно так много портов?

    @Mercury13
    Ingernirated:
    > зачем не онлаин играм и даже не сетевым порты?
    Играм мало на что, зато порты требуют защиты от копирования, службы печати, СУБД и многое другое. Сетевой порт — самый кроссплатформенный метод межпроцессной коммуникации (даже дисковые файлы — менее кроссплатформенный метод, не говоря об именованных потоках, оконном сообщении WM_COPYDATA, мьютексах и прочем).

    > и как взаимодействует порт и протокол?
    Никак. Вот ты узнаёшь: токарь в 123-м гараже, дай ему бутылку.
    123-й гараж — порт. Дать бутылку — протокол.

    Можно прийти с бутылкой в 125-й гараж, и обитатель этого гаража — если он там есть — даст бутылкой по голове, или разопьёт, но деталь не выточит. Можно прийти в 123-й гараж без бутылки, а он откажется или сделает на отвяжись. Токарь может арендовать 234-й гараж (и также требовать бутылку), потому что свой 123-й в ремонте.
  • Возможно ли решить данную задачу?

    @Mercury13
    Umid: И ещё нечто подобное я решал по долгу работы.
    Распараллеливание перебора на несколько процессоров.
  • Возможно ли решить данную задачу?

    @Mercury13
    :) Мы с тобой решили противоположные задачи.
  • Возможно ли решить данную задачу?

    @Mercury13
    Umid: Я старый олимпиадчик-самоучка тех времён, когда все спортивные ЯП были под стандартный режим ДОС, ни про какой STL не было и речи, и потому 50% задач были хорошо налаженным перебором. Посмотрите мой ответ Как найти минимальное время которое удовлетворяет условие? — я смотрю на задачу и вижу: ну перебор перебором! И наперебирался так, что побил рекорд по этой задаче.

    Динамическое программирование я узнал в университете применительно к теории управления: начинать надо именно с задач теории управления, а уж потом расширять метод на всякое там сходство строк.

    А ещё «я шёл сквозь ШАД». Алгоритмы вёл хорошо знакомый мне Медведев (один из пионеров киевского олимпиадного движения).
  • Как сделать наследование класса со структурой?

    @Mercury13
    Уточни задачу, нет такого понятия «параметр класса».
  • Как добавить элементы в QStatusBar?

    @Mercury13
    WayMax: Слишком мало писал настоящий действующий софт, если так доволен редактором.
    Есть куча задач, которые редактор не делает, потому что не обязан.
    Обрати внимание, я назвал Embarcadero «идеальным» — просто потому, что редко когда простейшие задачи нельзя сделать через редактор.
  • Как узнать время выполнения сортировки в C++?

    @Mercury13
    Откровенно странно. Часы высшей точности как раз должны быть монотонными, ибо используются в играх, медиаплеерах и прочем добре, где важны микросекунды.