• Для чего нужны побитовые операции?

    bogolt
    @bogolt
    Они нужны для:
    • Реализации криптографических алгоритмов
    • Реализации любых других алгоритмов требующих работу с битами
    • Чтобы пользователи языка не изобретали велосипеды


    Понимаете, это ведь не особенность языка - это скорее особенность наших процессоров,принципов вычислений, ассемблера. Раз уж эти операции существуют, причем именно в том виде в каком к ним привыкли то логично предположить что многие программы и алгоритмы рассчитывают на их наличие в инструментарии разработчика. Представьте что вам пришлось бы портировать некий криптографический алгоритм использующий эти операторы на js в котором их не было бы. Допустим вы реализуете его умножая/деля на два, но затем обнаруживаете, что при умножении старший бит у вас исчезает, а должен становится самый младшим. Кроме того ваша реализация на js была бы много медленней чем встроенная в язык реализация.
    Ответ написан
    Комментировать
  • Почему выводится ошибка "необработанное исключение по адресу"?

    bogolt
    @bogolt
    Про неверные индексы матрицы тут вам уже сказали, добавлю что вы не очищаете за собой память. На каждый выделенный блок памяти нужно вызвать delete x[];
    Ответ написан
    Комментировать
  • Какие перспективные технологии/направления для С++ программиста есть сейчас?

    bogolt
    @bogolt
    Си++ позволяет создавать отличные кроссплатформенные приложения. Программы с единым ( процентов на 95 ) кодом, которые работают на винде, линуксе и маке ( Qt, wxWidgets самые навороченные библиотеки ).
    Тоже самое касается игр - cocos2dx, sdl и вы можете разрабатывать игру на чистых плюсах с тем чтобы запускать ее на любой мобильной и десктопной платформе.
    Серверы: си++ применяется для написания высокопроизводительных серверов.

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

    bogolt
    @bogolt
    Формулу вам дали в условии задачи, в чем проблема то ?
    Ответ написан
  • Как сократить время выполнения программы [C++]?

    bogolt
    @bogolt
    Очевидно что самая долгая операция это пользовательский ввод, поэтому нужно быстрее водить число =)

    Шутки в сторону. Для начала убедитесь что вы собираете проект с включенной оптимизацией. Например мой старенький Core2Duo для n=999999 выдает ответ почти за секунду, после того как я собрал вашу программу с O2.

    ps. Чтобы выложить код в вопрос не нужно вставлять его картинкой - достаточно просто обернуть его в тег код ( поглядите на кнопки доступные в редакторе сообщений).
    Ответ написан
    Комментировать
  • Как лучше организовать класс и его объекты?

    bogolt
    @bogolt
    Если у вас будет только лишь указатель на вершину дерева, то как вы дальше будете ходить по ветвям этого дерева - без указателей на них?
    По-моему для узла дерева нужно что-то в таком духе:
    template<class T>
    struct Node
    {
    Node* left, *right;
    T data;
    };
    Ответ написан
  • Как лучше с точки зрения стиля программирования прописывать включение файлов ?

    bogolt
    @bogolt
    Давайте разберемся.
    .h файлы нужны для того чтобы описать типы данных и функции которые могут использоваться из разных .c файлов. Если у вас есть самодостаточный .c файл - хедер файл вообще ему не нужен.
    Когда же вы в си файле описываете функцию int make_me_coffie(int coffeine_level) то для того чтобы ее можно было вызывать из других си файлов - вам нужно этим файлам сообщить о существовании такой функции. Для этого вы можете в каждом из этих си файлов добавить описание этой функции.
    Так например в kitchen.c вы можете написать
    int make_me_coffie(int );

    и дальше спокойно пользоваться этой функцией. Никаких инклюдов тут не вообще нужно. Всем понятно что тащить в каждый си файл кучу определений типов и функций банально неудобно, и может привести к ошибкам, поэтому придумали инклюды. Инклюд включает содержимое файла в то место где он стоит. То есть все те определения функций появятся в вашем файле перед его сборкой.

    Теперь к вашим вопросам. Включать header.h в теле header.c не обязательно ( так как обязательного вообще ничего нет ) - то логично и разумно. Если уж у вас есть один модуль header то скорее всего функции и типы данных описаны именно в header.h а значит header.c должен его включать.

    Включать в header.c если он уже включен в header.h совершенно не обязательно, так как наш header.c уже включает header.h который включает stdio.h - а значит все необходимые определения функций уже будут в нашем файле. Впрочем включить stdio.h можно, это ничему не повредит благодаря системе дефайнов, которые обычно добавляются в каждый хедер файл, чтобы предотвратить множественное его включение.
    Ответ написан
    Комментировать
  • Почему при динамическом копировании символов, остается лишняя память?

    bogolt
    @bogolt
    До меня тут уже ответили, но хочу добавить.
    Автор - обратите внимание на работу с памятью. Если вы напишите подобное в реальной программе, то такая утечка памяти как здесь сможет за несколько минут/часов/дней в зависимости от частоты использования функции выжрать всю оперативку на запущенной машине.
    Разберитесь как работают new/delete и malloc/free. Разберитесь почему нельзя выделить переменную через оператор new и потом освобождать эту память через free ( даже если сейчас у вас это каким-то образом сработало ).
    По вопросу - strcat принимает вторым аргументом указатель на строку а не указатель на единственный char и обманув компилятор добавленным значком & вы обманули лишь себя.
    Ответ написан
    Комментировать
  • Как можно поучавствовать в open source проекте?

    bogolt
    @bogolt
    Выбрать интересный опен сорс проект, в котором лично вам чего-то не хватает, или раздражают какие-то баги с которыми вы сталкиваетесь. Скачать код, добавить функционал или пофиксить баги. Выложить пул реквест. Повторять до удовлетворения состоянием проекта или потери интереса.
    Ответ написан
    Комментировать
  • Как создать GUI на чистом C?

    bogolt
    @bogolt
    На голом си не так уж много GUI библиотек. Пожалуй самая навороченная из кросс-платформенных, свободных это Gtk++.
    Ну если вам только под винду то можно конечно взять WinAPI, хотя имхо это самый проигрышный вариант.
    Ответ написан
    Комментировать
  • Что делать с ошибкой undefined reference to при передаче параметра в функцию?

    bogolt
    @bogolt
    Вы объявили separateImage членом класса, а определили ее как глобальную функцию ( не указали имя_класса:: перед определением. Поэтому и возникает undefined reference.
    Ответ написан
    Комментировать
  • Какой ОС лучше учить бабушку?

    bogolt
    @bogolt
    Моя бабушка сидит на убунте. Скайп в автозагрузке, его освоила. С браузером сложнее, но проблемы собственно в ориентации по сайтам чем с самим бразуром.
    По факту нужно выбирать ту ОСь которую не нужно будет чинить если что, и которая не даст пользователю ничего случайно сломать или просто изменить.
    Ответ написан
    Комментировать
  • Как понимать эту цитату?

    bogolt
    @bogolt
    112*8 = 896
    896+4 = 900
    Ответ написан
    Комментировать
  • Что означает эта ошибка в С++ ?

    bogolt
    @bogolt
    Ошибка в недрах STL событие маловероятное. Эта библиотека тестируется годами на огромном количестве проектов. То что ошибка проявилась именно в std::vector вовсе не значит что ошибка именно там. Вероятнее всего - код пытается работать с удаленной памятью, вызывает функцию получения размера, а так как объект не существует программа падает.
    Это совершенно нормально для программ с ручным управлением памятью ( ну и для остальных тоже вроде случается ).
    Почему ошибка может происходить время от времени: причин тому множество. Может неправильная работа с многопоточностью ( и тут уже зависит от ОС как она и что распределит ) ведет к тому что изредка один поток обращается к ресурсу удаленному другим потоком. Может ошибка с памятью проявляется не сразу потому что хоть какие-то значения обращаются к несуществующей памяти, но физически эта память находится в адресном пространстве вашей программы, а значит ОС считает что все в порядке. Ну а уже когда указатели выходят за пределы этого пространства - случается большой бум.

    Раз уж у вас есть запрос который гарантированно воспроизводит проблему - вам стоит попытаться отладить ваш сервер и найти эту ошибку.
    Ответ написан
    3 комментария
  • Какие подводные камни Google App Engine?

    bogolt
    @bogolt
    >Начинаем довольно большой проект
    >решили использовать в качестве платформы Google App Engine

    Когда гугл решить закрыть свой очередной "никому не нужный сервис чтобы сделать нечто еще более крутое" вам будет очень весело.
    Имхо в вопросах ключевых мест своих программ нельзя быть настолько зависимым от кого бы то ни было.

    ps. гугл не единственная платформа дающая возможность разрабатывать приложения, но я бы не цеплялся ни за одну из них без веских на то причин.
    Ответ написан
  • Почему не срабатывает сигнал в режиме Release?

    bogolt
    @bogolt
    >Коннект вроде проходит нормально (стоит assert)
    Подозреваю что вы написали нечто в таком духе
    assert(connect(signal(), slot());
    и в этом ваша ошибка.
    Дело в том что в релизной сборки все ассерты из кода выкидываются. Есть дефайн, гласящий что в дебаге ассерты выводят сообщение об ошибке, а в релизе меняются на void. А так как выкинулся ассерт то выкинулась и ваша функция.
    Так что проверяйте результат функций не в ассертах, ну или вначале получите значение функции а потом пихайте его в ассерт.
    Ответ написан
    4 комментария
  • Как далеким от программирования основателям найти ведущего разработчика в стартап?

    bogolt
    @bogolt
    "Наличие успешно реализованных проектов" - очень интересный критерий. Но ведь вполне может быть так, что человек долго и упорно работал, а проектов реализованных нет. Или есть но показать их не может. А может были - но уже их не существует, умерли от старости. А вы такое ощущение что ищите стартапера, да еще и такого который уже что-то успешно реализовал, но такому и вы скорее всего будете не нужны.
    В мире современного софта программы могут устаревать еще до выхода на рынок, конторы разоряются и забрасывают почти реализованные проекты, проекты оказываются никому не нужны по выходу и тоже умирают. А еще есть корпоративный сектор - где успешно реализованный проект вроде бы есть, но пользуется им два человека, и увидеть его извне ну никак нельзя. Вот и получается что этим требованием вы можете срезать кучу подходящих кандидатов.
    Ответ написан
    2 комментария
  • Какие технологии нужно использовать для создания web приложения, которое задействует код на С++ (только для вычислений)?

    bogolt
    @bogolt
    Запускать код на си++ как отдельный процесс, и использовать что угодно.
    Или вынести в библиотеку, создать обертку на чистом Си и использовать что угодно - благо Си функции можно вызывать по-моему из любого ЯП.
    Ответ написан
    Комментировать
  • Почему так происходит и где ошибка?

    bogolt
    @bogolt
    Так, теперь попробуйте улучшить ваш вопрос, так чтобы на него можно было ответить.
    1. Скриншот запущенного приложения это прекрасно, но непонятно зачем он нужен.
    2. Скриншот куска ошибок - ничего не понятно какие именно там ошибки. Разберитесь как из студии скопировать лог сборки и вытащите эти сообщения оттуда.
    3. После чтения из файла - проверьте значение переменной con и выведете его на экран, чтобы убедится что именно из файла читается не то число.
    Если там не то число - то проверьте тип этой переменной - может вы записали туда char "1" а читаете его уже как int или наоборот.
    Ответ написан
  • Кроссплатформенная игра на Qt, реально ли?

    bogolt
    @bogolt
    Теоретически на Qt реально. На практике может лучше cocos2d-x взять ? Тоже плюсы, ну и все заявленные вами платформы тянет.
    Ответ написан
    Комментировать