Ответы пользователя по тегу C
  • На каком языке пишут программы для электронного блока управления газоболонного оборудования?

    OCTAGRAM
    @OCTAGRAM
    Кроме классических императивных языков это могут быть языки стандарта ГОСТ Р МЭК 61131-3 (IEC 61131-3). Там штук пять языков, но из них текстовые только два, ST = Structured Text, похож на Паскаль, и IL = Instruction Language, что-то вроде ассемблера. Настоящий ассемблер на железке ARM или AVR, а IL искуственный, не как в процессорах. Другие языки графические, это релейные диаграммы, блок-схемы и что-то ещё, что могут проектировать и читать люди не программисты. Всю эту смесь модулей можно загрузить в ПЛК, и будет работать. Внутри ПЛК может работать интерпретатор, который на каждом такте запускает исполнение во всех модулях. Интерпретатор может увидеть, что какой-то модуль работает слишком долго, и прервать, не дать подвесить весь ПЛК, не дать привести к ущербу. Поэтому это популярно. В некоторых моделях ПЛК сделана трансляция в Си вместо интерпретатора, но в отличие от программирования на чистом Си, из конкретного странно работающего ПЛК можно скачать программу, которая на нём крутится, в исходном виде, на языках ПЛК. В графических языках блок-схемы будут расположены в том же месте. Когда я учился на приборостроение, у нас была среда CoDeSys
    Ответ написан
    Комментировать
  • Как удалить необходимые узлы из бинарного дерева?

    OCTAGRAM
    @OCTAGRAM
    В бинарном дереве поиска, чтобы удалить узел с детьми, его нужно сначала обменять с соседним более нижним, а потом удалить на новом месте. Под соседом понимается не связанный узел, а ближайший по значению. Алгоритмически это правейший потомок непосредственно левого сына или левейший потомок непосредственно правого сына. Так как он левейший или правейший, одного узла у него не будет, вы точно сможете его там удалить.

    Пример дерева:

    .
       4
     2   6
    1 3 5 7


    Если выстроить дерево поиска в ряд, то получится 1-2-3-4-5-6-7. Чтобы удалить 4, надо, например, обменять 4 и 5, временно нарушив порядок в дереве, а потом удалить 4 в новой позиции. В дереве не стало 4, а порядок снова восстановлен.

    1-2-3-4-5-6-7
    1-2-3-5-4-6-7
    1-2-3-5-6-7


    .
       5
     2   6
    1 3 4 7


    .
       5
     2   6
    1 3   7
    Ответ написан
    Комментировать
  • Представление символа в char?

    OCTAGRAM
    @OCTAGRAM
    Поправка: символы в ASCII кодируются от 0 до 127, и знаковость char на них не распространяется.

    Всё, что за пределами 127, — это Latin-1, OEM, ANSI, UTF-8, что угодно, но не ASCII. Пишут, что всё это называют расширенным ASCII, но как можно о чём-то говорить, если это КОИ-8, и другие кодировки.

    Приведённый код не переносим. Например, в Windows 10 есть возможность для старых программ врубить кодировку UTF-8 вместо всяких 1251 и 866. Там ваши ╬ совсем по-другому кодируются. Используйте только Юникод. В разных языках программирования и разных трансляторах качество стандартной библиотеки варьируется. Если стандартная библиотека бяка, придётся через API операционки работать, пока там до этих жирафов дойдёт.

    Хорошим тоном будет, обнаружив консоль, писать в неё через юникодные API, а, обнаружив перенаправление, писать байты UTF-8, игнорируя ACP_OEM и пр., чтоб быстрее похоронить зоопарк всего, отличного от Юникода.
    Ответ написан
    1 комментарий