• Системы счисления?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    двоичные числа как-то странно.
    есть двоичная система отсчета, в которой есть только две ЦИФРЫ. Следовательно число тебе нужно указать только двумя цифрами.
    0 - десятичный 0
    1 - десятичный 1
    10 - десятичное 2
    11 = десятичное 3
    100 = десятичное 4
    101 - десятичное 5
    110 - десятичное 6
    111 - десятичное 7

    чтобы указать десятичное 8, тебе понадобится уже четыре цифры в двоичной системе, поэтому для трех разрядов максимум будет 111 (или десятичное 7)
    максимальное число не ограничено, ты же можешь в десятичной системе сколько угодно цифр писать, так и в двоичной. Просто оно будет гораздо длиннее.
    Ответ написан
    Комментировать
  • Как сделать событие по встряхиванию устройства?

    Ewintory
    @Ewintory
    Java / Android developer
    Комментировать
  • Как удалить все повторяющиеся вариации?

    saboteur_kiev
    @saboteur_kiev Куратор тега Программирование
    software engineer
    можно отсортировать слова в алфавитном порядке, затем удалить дубликаты строк.
    Ответ написан
    Комментировать
  • Как получить указатель на метод объекта?

    Можно
    Если напрямую, то надо использовать тип "указатель на функцию член" вида Ret (Class::*)(Args...) [const]. Сам указатель получать &Class::Fun, а вызывать операторами .* или ->*
    Или использовать std::function (boost::function), std::bind (boost::bind) или std::mem_fun, std::mem_fn для более унифицированного подхода:

    struct some
    {
    	some() : value(0) {}
    
    	int inc() { return ++value; }
    	int dec() { return --value; }
    	int get() const { return value; }
    
    	int value;
    };
    
    int main()
    {
    	some s;
    
    	int (some::*inc_f)() = &some::inc; // inc_f - указатель на функцию
    	std::cout << "(s.*inc_f)() = " << (s.*inc_f)() << std::endl; // оператор .* - оператор вызова по указателю на функцию
    	int (some::*val_ptr) = &some::value; // val_ptr - указатель на член
    	s.*val_ptr = 10;
    	std::cout << "s.*val_ptr = " << s.*val_ptr << std::endl;
    
    	int (some::*const_f)() const = &some::get; // const-функция
    	std::cout << "s.*const_f() = " << (s.*const_f)() << std::endl;
    
    	using namespace std::placeholders;
    	std::function<int (some&)> mem_f;
    	
    	mem_f = std::bind(&some::inc, _1); // биндим на функцию-член, _1 - placeholder для объекта
    	std::cout << "mem_f(s) = " << mem_f(s) << std::endl; // s.inc();
    	mem_f = std::mem_fn(&some::dec); // другой способ через mem_fn
    	std::cout << "mem_f(s) = " << mem_f(s) << std::endl; // s.dec();
    
    	std::function<int()> mem_f_ = std::bind(&some::inc, &s); // биндим на функцию член и сразу указываем объект, получаем функцию без аргументов
    	std::cout << "mem_f_() = " << mem_f_() << std::endl; /// s.inc();
    
    	std::function<int(some const &)> const_fn = std::mem_fn(&some::get); // some const &
    	std::cout << "const_fn(s) = " << const_fn(s) << std::endl;
    
        return 0;
    }
    Ответ написан
    Комментировать
  • Как игровые движки компилируют код?

    Nipheris
    @Nipheris Куратор тега C++
    Вы явно путаете жужжащих мух с теплыми котлетами. Игровые движки создаются разработчиками, также же как и любые другие приложения. Если это игровой движок в классическом понимании (нативный, на D3D или OpenGL) - то это нативное приложение, для создания которого применяются в общем-то обычные хорошо известные инструменты: язык программирования и его тулчейн (компилятор+линковщик) - это минимум, а там уже у кого как - IDE (одну из которых вы упомянули в тегах), просто редактор типа sublime и т.д.
    exe-файл, как и любой другой модуль на любой платформе (PE(exe, dll) на винде, ELF (бинарник/so) на линухе и т.д.) - это результат работы линковщика. Линковщик собирает сгенеренные компилятором объектные файлы и другие библиотеки в такой модуль, объектные файлы генерятся компилятором из исходного кода, исходный код пишут разработчики.
    Для Microsoft Word, Half-Life и KDE в общем и целом этот процесс - одинаковый. Разница только в инструментах, платформах и мелочах.
    Смысл вопроса из заголовка - "как ДВИЖКИ компилируют код?" я так и не понял, если вы имеете в виду скрипты, которые можно выполнять средствами движка - это другая история, многие серьезные двиги используют интепретаторы существующих скриптовых языков (Lua например весьма популярен) или пишут свой для реализации на этом скриптовом языке игровой логики, интерфейсных плагинов (в WoW так делают), ну и так далее.
    P.S. Если уж упомянули в тегах студию, поставьте её, создайте простейший консольный проект (Win32 Console Application), скомпильте и запустите - и вы выполните всю ту цепочку, которую выполняют разработчики нативных приложений (только она у них может быть сложнее, кастомизирована под их нужды, и в их проектах не 2 cpp-файла, а 10 тысяч).
    Ответ написан
    Комментировать
  • Какая разница между C, C#, C++?

    @dmitryKovalskiy
    программист средней руки
    Разница в количестве плюсиков. У первого -0 , у второго - 4, у третьего - 2. Новичку лучше учить C++. А если серьезно : С- язык низкого уровня для системного программирования, драйверов и другой низкоуровневой разработки. С++ - тоже самое с обвесами из классов, перегрузок, шаблонами и некоторыми другими фичами. С# - ООП язык для разработки под .NET - Microsoft-стек технологий для разработки самых разных приложений.
    Ответ написан
    Комментировать
  • Где найти видеоуроки на русском по современному Фортрану?

    RiseOfDeath
    @RiseOfDeath
    Диванный эксперт.
    Современный фортран вообще существует в природе?
    Ответ написан
    4 комментария
  • Какую лучшую программу вы знаете для распознавания текста?

    Abby Fine Reader
    Ответ написан
    Комментировать
  • На чем лучше всего писать современые прикладныи приложения под Windows?

    Adamos
    @Adamos
    По тем пунктам, которые знаю сам:
    Microsoft Foundation Classes - труп, официально закопанный самой MS
    Visual Component Library - труп, живущий только потому, что студентов годами учили писать под Борланд
    Qt - логичный вариант, минусом тяжеловесность, плюсом кроссплатформенность и развесистость (много готового кода, который можно просто использовать)
    wxWidgets - ну, представьте себе, что независимые программисты посмотрели на MFC и VCL и сделали все то же самое, но кроссплатформенно. Зависимостей нет - все API нативное под каждую платформу. Увы, востребовано оно куда меньше Qt, поэтому развивается вяло и не так богато готовеньким.

    Да, и сейчас уверенно заявлять, что будешь писать только под Windows, довольно неосмотрительно, как мне кажется...
    Ответ написан
    Комментировать
  • Как сохранить в кэш интовое значение?

    @deliro
    Кажется, вы не понимаете, что такое кэш.
    Можно хранить в файле настроек (.ini, .conf)
    Ответ написан
    Комментировать
  • Зачем у программиста на столе второй монитор установлен вертикально?

    BuriK666
    @BuriK666
    Компьютерный псих
    код, так больше строк влезает.
    Ответ написан
    Комментировать
  • API у операторов существует ли?

    IonDen
    @IonDen
    JavaScript developer. IonDen.com
    API? У опсосов?) Лет через тыщу.
    Ответ написан
    Комментировать
  • Как реализовать алгоритм расстановки кораблей на поле?

    edli007
    @edli007
    full stack, team lead
    Требуется случайная генерация?

    1. определяешь случайным образом положение корабля
    2. исключаешь занятые клетки с массива, если места нет а корабли есть - обнуляешь поле.
    3. идешь к пункту 1, пока не расставишь все корабли.
    Ответ написан
    Комментировать
  • Как определить, что три точки удовлетворяют условию?

    На одной кривой? Или на одной прямой?
    Точки разные - сравнить координаты
    Параллельна оси y - значит у всех координата x будет одинаковая
    Параллельна оси x - значит у всех координата y будет одинаковая
    Ответ написан
    Комментировать
  • Где можно почитать о процессе разработки и о технологиях в одном месте?

    Ewintory
    @Ewintory
    Java / Android developer
    Начало конструирования. Разбитие приложения на пакеты.Пакеты на классы.Классы на методы.

    Методы еще на строки забыли разбить.
    Ответ написан
    1 комментарий
  • Зачем нужны монады?

    @balamut108
    Py
    Я как-то был на лекции по функц. программированию и лектор сказал, что если вы спрашиваете зачем вам использовать монады, тогда вам не нужно использовать монады, так что послушай умного человека (лектора) и расслабься :)
    Ответ написан
    4 комментария
  • Почему может возникать Invalid pointer operation в Pascal?

    @vilgeforce
    Раздолбай и программист
    Скорее всего все так и есть: дважды вызов "очистки" на одном объекте.
    Ответ написан
    Комментировать
  • Каким образом избавиться от сообщения об неиспользуемых переменных?

    @vilgeforce
    Раздолбай и программист
    Запрет на "оптимизацию" возможно получится сделать объявив переменную volatile
    Ответ написан
    3 комментария
  • Как проинициализировать массив в конструкторе С++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В данном конкретном случае инициализации нулями можно сделать так:
    memset(map, 0, sizeof(map));

    Если map -- массив POD-объектов, а инициализация нетривиальная, можно скопировать эталонный массив с помощью memcpy:
    Map(){
        static const map_init[20][20] = {
            ...
        };
        memcpy(map, map_init, sizeof(map));
      }


    В противном случае -- любым другим "объектным" способом -- std::copy, циклом, как угодно.

    Начиная с С++11 можно проинициализировать массив в списке инициализации конструктора, вне зависимости от того, POD поле или нет, например так:
    Map(): map{{1, 2, 3, 4, 5, ...}, {21, 22, 23, 24, 25, ...}, ...} {
      }
    Ответ написан
    Комментировать