Задать вопрос
Ответы пользователя по тегу Программирование
  • Как проверить, пустой ли стек?

    @abcd0x00
    В самом начале создаем 1 элемент стека "top" (он же пока что и является верхним) при помощи конструктора с полями key = NULL, deeperElement = NULL;

    Зачем он там нужен, если в нём ничего нет? Бывает, учат так в вузах, добавляя лишние ненужные элементы.
    Сделай стек и инициализируй его вершину нулевым указателем и по этому значению проверяй. Ни один указатель на объект не может быть равен нулевому указателю, поэтому это надёжное средство.
    Ответ написан
    Комментировать
  • Какой стиль комментирования кода правильнее?

    @abcd0x00
    Лучшие из всех те комментарии, которые не нужны. А вообще, да, пиши комментарии на каждый чих, чтобы научиться просто их писать и знать, что в них писать надо, а что не надо. И тогда ты сможешь прийти к тому уровню, когда у тебя сам код станет комментарием самого себя.
    Ответ написан
    Комментировать
  • Как умножить каждый ДЕВЯТЫЙ элемент списка на 2?

    @abcd0x00
    >>> lst = [1, 2, 3, 4, 5] * 10
    >>> 
    >>> out = [n * 2 if i % 9 == 0 else n
    ...        for i, n in enumerate(lst, 1)]
    >>> out
    [1, 2, 3, 4, 5, 1, 2, 3, 8, 5, 1, 2, 3, 4, 5, 1, 2, 6, 4, 5, 1, 2, 3, 4, 5, 1, 4, 3, 4, 5, 1, 2, 3, 4, 5, 2, 2, 3, 4, 5, 1, 2, 3, 4, 10, 1, 2, 3, 4, 5]
    >>>
    Ответ написан
    Комментировать
  • Как проигнорировать содержимое тегов?

    @abcd0x00
    Используй конечный автомат на три состояния: начало (S1), в середине без символа (S2) и в сердине с символом (S3).
    В S1 ты можешь принять только открывающую скобку и перейти в S2.
    В S2 ты можешь принять только простой символ и перейти в S3.
    В S3 ты можешь принимать простые символы и закрывающую скобку.
    Ответ написан
    Комментировать
  • Как назвать направление в программировании, занимающееся алгоритмами парсинга/разбора JSON, XML, др. языков?

    @abcd0x00
    Лексический анализ -> синтаксический анализ -> семантический анализ.

    Теория синтаксического анализа, перевода и компиляции.
    Альфред Ахо и Джеффри Ульман.
    Ответ написан
  • Указатель на указатель?

    @abcd0x00
    Вот в этой строке argv - это указатель на указатель на строку.
    int main(int argc, char *argv[])
    Аргументы программы представлены в виде массива указателей на строки, в котором последний указатель равен нулю (нулевому указателю).

    Бывает, что эту строку записывают и так
    int main(int argc, char **argv)
    Ошибки нет. Просто пишут скобки, чтобы напомнить, что там массив указателей, а не просто один указатель какой-то.

    И дальше что? Правильно, ты можешь делать argv++, переходя по массиву указателей вправо.

    А как сделать функцию, которая сама бы переставила argv?
    void func(char ***p) { (*p)++; }
    ...
        func(&argv);

    Пример
    #include <iostream>
    
    using namespace std;
    
    void func(char ***p)
    {
        (*p)++;
    }
    
    int main(int argc, char *argv[])
    {
        cout << argv << " " << *argv << endl;
        func(&argv);
        cout << argv << " " << ((*argv) ? *argv : "no") << endl;
        return 0;
    }

    Вывод
    [guest@localhost cpp]$ .iso++ t.cpp -o t
    [guest@localhost cpp]$ ./t
    0xbffc3114 ./t
    0xbffc3118 no
    [guest@localhost cpp]$ ./t a
    0xbf999594 ./t
    0xbf999598 a
    [guest@localhost cpp]$

    Ответ написан
    Комментировать
  • Почему char занимает 1 байт, а строка с одним символом - 2 байта?

    @abcd0x00
    Нуль-символ обозначает конец строки. То есть строку можно читать, посимвольно смещаясь вправо, пока не встретится конец. Таким образом её длину хранить не нужно.
    А теперь представь строку на миллиард символов. Для такой строки затраты на хранение её длины остаются теми же - один байт в котором записан нуль-символ.
    А вот если бы длина строки хранилась в переменной, то нужно было бы следить за размером этой переменной, потому что на слишком длинных строках числовое значение длины не помещалось бы в переменную.
    Ты думаешь, почему Дельфи такой медленный язык (программа The Bat! работает медленно), потому что там этого нет, из-за чего происходит множество лишних вычислений.
    Ответ написан
  • Какой путь для написания конкретной программы наиболее эффективен для новичка?

    @abcd0x00
    Кратко о программе которую я хочу написать. Это база данных собственных ошибок (в разных областях)

    Это описание похоже на excel-файл, не более.

    Qt Creator не полностью автоматизирован, поэтому многие вещи там нужно писать вручную. А чтобы писать вручную, надо разбираться в том, как там всё устроено.
    Ответ написан
    Комментировать
  • Как на английский переводится "инструкция"?

    @abcd0x00
    statement - оператор
    operator - операция (+, -, *, /)
    expression - выражение
    assertion - утверждение
    condition - условие
    instruction - инструкция
    operation - операция (действие)

    while (cond) {
        f1();
        f2(); f3();
    }

    Оператор while с условием cond содержит в своём теле три оператора, каждый из которых является вызовом функции.
    Ответ написан
    Комментировать
  • Как и как Вы следите за новостями с сфере Ваших интересов и новостями в IT в целом?

    @abcd0x00
    1)
    У меня есть html-файл, который хранит ссылки на каждодневные полезные ресурсы.
    Это типа закладок в браузере, только лучше, потому что ты сам выбираешь внешний вид и оно одинаково выглядит в любом браузере любой версии.
    2)
    На рабочем столе прикреплены виджеты для сбора rss с разных разделов, которые обновляются сами.
    На один сайт с разными разделами нужен один виджет, а виджетов на рабочем столе можно сделать около десяти, а рабочих столов четыре.
    3)
    А для занятий и хранения информации есть множество разных org-файлов.
    Это похоже на гипертекст, когда один упорядоченный файл ссылается на другой упорядоченный файл. Файлы могут ссылаться друг на друга или в интернет или даже на свои собственные позиции в тексте, а ещё могут ссылаться на запуск программы (удобно книги читать в pdf). Внутри можно хранить данные в табличном виде, где таблицы динамически форматируются сами. Поэтому ссылки на программы можно хранить прямо в таблицах, которые сами форматируются.
    Картинка
    53a11eb3b5304fccbaaa39f44f9d633e.png
    Ответ написан
    Комментировать
  • Си. Как сделать функцию, умножающую число?

    @abcd0x00
    Тебе, конечно, предложили с указателем, но надо сделать без указателя.
    int func(int x)
    {
        return x / 10;
    }
    
    ...
    
        a = func(a);
    Ответ написан
    1 комментарий
  • Как сделать откат нескольких коммитов git в eclipse?

    @abcd0x00
    Сначала делаешь ветку или тег, чтобы удерживать эти неправильные коммиты, потом откатываешь master.
    git branch incorrect
    git reset HEAD~3
    Ответ написан
    Комментировать
  • Для чего в программировании на Си нужно и можно применять побитовое отрицание (тильду) для беззнаковых чисел?

    @abcd0x00
    Чаще всего побитовое отрицание используется для того, чтобы сохранить установленные биты нетронутыми при побитовом умножении.

    Например:
    У тебя есть переменная с битовыми флажками
    0101 0011
    Здесь 8 бит и в каждом записан флажок: 0 - флажка нет, 1 - флажок есть.

    Вот тебе надо справа снять самый крайний флажок, потому что это что-то означает в программе. (Типа был какой-то файл на диске, а потом его стёрли и тебе надо это пометить, чтобы программа знала.)

    Чтобы снять самый правый флажок, нужно
    0101 0011
    превратить в
    0101 0010

    А как это сделать?
    Нужно взять значение переменной, поменять его и результат сохранить обратно.
    Чтобы его поменять, мы делаем маску и побитово умножаем её на первоначальное значение (операция &).

    То есть нам нужно выполнить
    0101 0011
    &
    1111 1110
    Тогда самый правый флажок станет нулём, а остальные флажки останутся незатронутыми, так как побитовое умножение на 1 даёт то же самое, что там и было.

    И вот тут-то возникает главный вопрос: как сделать эту маску?
    Мы можем её записать напрямую или получить с помощью побитовых операций.

    Мы берём число 1, оно выглядит как
    0000 0001
    применяем к нему операцию побитового отрицания (операция ~)
    1111 1110
    и видим свою маску.
    Ответ написан
    Комментировать
  • Правильно ли составлена блок-схема программы, и что нужно изменить, чтобы она стала идеальной?

    @abcd0x00
    А ты, вообще, знаешь, что блок-схему нужно составлять до кода, а не наоборот?
    Потому что выглядит это как запутанная блок-схема, составленная из запутанного кода.
    Ответ написан
    Комментировать
  • Как правильно прочитать такой синтаксис?

    @abcd0x00
    В приличной документации должно быть дано описание этого синтаксиса в начале. (Если её писал человек, знакомый с математикой.)
    Ответ написан
    Комментировать
  • Применение техник запоминания (мнемотехник) для освоения языков/фреймворков/библиотек/документации?

    @abcd0x00
    Есть ли результаты?

    Результаты есть и без этого. Главное правило: если приходится искать способы запоминания, значит ты слишком поверхностно проходишь материал, который требует глубокого погружения. Нет ничего хуже поверхностных знаний всего понемногу.
    Ответ написан
    Комментировать
  • Как перенести алгоритм вычисления хеша на lua?

    @abcd0x00
    Или хотя бы расскажите, что он делает.

    1. Он добавляет 8-битное значение к 32-битному значению.
    2. Затем берёт у этого 32-битного значения 13 бит слева и переставляет их направо.
    3. Потом из исходного 32-битного значения вычитается полученное 32-битное значение.
    4. Потом всё повторяется, пока есть 8-битные значения.

    Если бы ты запустил это в дебаггере, то увидел бы по шагам, что происходит в цикле.
    Ответ написан
    Комментировать
  • Как в python3 отобразить html страницу с кириллицей?

    @abcd0x00
    import urllib.request
    
    url = 'http://www.ex.ua'
    
    data = urllib.request.urlopen(url)
    enc = data.info().get_content_charset() or 'latin1'
    doc = data.read().decode(enc)
    print(doc)
    Ответ написан
    2 комментария
  • Программист может быть только в одном яп профи или в нескольких?

    @abcd0x00
    Человек может стать профи только в одном яп или может быть профи сразу в нескольких яп ?

    Один язык нужно выучить полностью, остальные языки наматываются на знания из него. Если что-то не выучишь, будешь должен учить это всё равно в каком-нибудь другом языке.
    Ответ написан
    Комментировать
  • Кто нибудь знает хороший учебник по Python-Fu?

    @abcd0x00
    Примеры скриптов
    registry.gimp.org/node/28124

    Обычно переводишь со схемы на питон. Если не знаешь чего-то, просто смотришь через dir() список имён в объекте.
    Ответ написан
    1 комментарий