• Какою директив лучше использовать для класса (#pragma once) или (#ifndef)?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Я за #pragma once

    #ifndef костыль придуманный вместо реализации нормальной модульной системы, хотя бы по типу того же паскаля, если говорить о бородатых временах.
    Ответ написан
    3 комментария
  • Какую книгу по С++ выбрать?

    ThePyzhov
    @ThePyzhov
    iOS Ninja
    Сам учился по Прата - Лекции и упражнения.
    Как задачник (да и не только), очень хороши Дейтелы С++. Очень много разнообразных задач. Если учить по Дейтелам, на мой взгляд не понять то как они объясняют С++ - невозможно. За чем к ним иногда и обращался.
    Учебник Шилдта многие советуют, но мне как-то не очень понравился, а вот его справочник мне иногда пригождается.

    Лафоре не советовал бы, т.к. очень много воды.
    Ответ написан
    2 комментария
  • Как обработать все случаи при решении системы линейных уравнений с двумя неизвестными?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    Для решения систем удобнее пользоваться матрицами, и методом Крамера в частности. Это не так страшно, как выглядит. И код получится намного проще и логичней.
    Ответ написан
    2 комментария
  • Можно ли вызвать функцию из конструктора класса C++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    можно ли вызвать функцию из конструктора класса?

    Конечно. Есть, правда, некоторые тонкости с виртуальными функциями.

    Students::Students(std::string name, std::string last_name) 
    {                                                                                            
        Students::set_name(name); // Вызываем(создаем) функцию с фактическим параметром
        Students::set_last_name(last_name); // тоже самое. Можно ли так делать?
    }

    Имя класса (Students::) можно не добавлять к вызовам внутри функции-члена класса.

    Поля можно проинициализировать в списке инициализации конструктора. Например так:
    class Students
    {
    ...
        std::string name_;
        std::string last_name_;
    ...
    };
    
    Students::Students(const std::string& name, const std::string& last_name): name_(name), last_name_(last_name)
    {                                                                                            
    }
    Ответ написан
    1 комментарий
  • Что такое расстояние Хемминга?

    Фиг знает как объяснить доступно, но попробую.
    К примеру, есть два вектора A1 и A2.
    Длина A1 равна 10 и длина A2 равна 10.
    Расстояние будет одинаковым, т.к. нет никаких расхождений.
    Если увеличить длину одного из векторов, то разница в длинах как раз и будет расстоянием Хемминга.
    Но это пример плохой, но подходит для начала.
    Другой пример поближе к жизни.
    Возьмем две строки (там же длина везде сравниваемых объектов должна быть одинакова).
    К примеру, пусть будет вот так:
    $a = "abcdef";
    $b = "abcdfe";
    Длины строк у нас одинаковые, но побитово - разные, поэтому можно найти расстояние.
    Оно будет равно двум: в первой и второй строке последние два байта разные.

    То есть имея две одинаковые по длине строки мы сравниваем их побайтово и количество различающихся байт и есть расстояние Хемминга.

    Я не очень уверен, что это прям вот совсем правильное объяснение, но надеюсь суть оно донесет.
    Ответ написан
    1 комментарий
  • Какие существуют сайты с интересными задачами желательно по разному уровню сложности по C++?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Не берите задачи, решайте конкретные проблемы, написанием полноценных приложений, которые нужны лично вам.

    Напишите свои часы с напоминалками в трее, свой блокнот с подсветкой, свой калькулятор для коммунальных услуг, свой хранитель паролей, свою заставку для lock screen.

    Для написания, пользуйтесь ресурсами, которые нужны реальному разработчику - система контроля версий, багтрекер, чтобы вы могли отслеживать ваши изменения и записывать идеи и баги, а затем контролировать как это происходит. При публикации на github можно делиться кодом с друзьями, или наоборот форкнуть чей-то готовый проект, и улучшать его, глядя на то, как писали другие (возможно более опытные программисты)

    Большинство задач связаны не с полноценной разработкой, а решением отдельных задач, часто оторванных от реальности.
    Ответ написан
    2 комментария
  • Какие существуют алгоритмы зашумления/искажения изображений?

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


    + последовательное объединение перечисленных выше алгоритмов
    Ответ написан
    1 комментарий
  • С++ Что за парметры принимает функция?

    LPCWSTR lpFileName, //путь к файлу
    ULONG ClusterSize, //размер кластера (какое значение сюда передавать?)
    ULONG *ClCount, //???
    ULONG *FileSize //размер файла

    Все есть в комментариях, а так же по названию аргумента не сложно догадаться.
    Ответ написан
    Комментировать
  • Как подключить Boost к Qt Creator?

    @JustSokol Автор вопроса
    newby programmer
    В общем все решилось тем что надо было правильно записать все в файл проекта (*.pro) и нажать qmake.
    При этом хоть изначальная библиотека (asio) основана только на header`ах и имплементациях, но использует другие библиотеки Boost и соответственно подключает/включает их при подключении соответствующего .hpp .
    То есть необходимо было собрать предварительно весь буст своим компилятором в либы, либо скачать уже готовые под винду с офф сайта .
    В итоге в файл .pro добавляется
    INCLUDEPATH += C:/WORK/boost_1_59_0
    LIBS += "-LC:\WORK\boost_1_59_0\lib64-msvc-12.0"

    жмется qmake и дальше все собирается.

    ПС: получилось что сам спросил - сам ответил.
    но надеюсь зато в следующий раз кто-то быстро найдет в поисковике проблему и увидит решение.
    Ответ написан
    Комментировать
  • При помощи чего разрабатываются интерфейсы для Desktop-приложений?

    Nipheris
    @Nipheris Куратор тега C++
    > Battle.net
    вот очень кстати сказали. Открываем <путь установки>\Battle.net.XXX\, видим:
    2406a0538fd449489e2ffaf0a7f2f05e.png
    Ну вы поняли :)
    А красиво и стильно, это потому что у компании есть деньги на:
    1) специалистов, которые знают и С++, и Qt достаточно хорошо, чтобы придавать приложениям желаемый вид
    2) дизайнеров, которые дадут несколько идей, из которых потом можно выбрать ту, которую реально реализовать, чтобы выглядело на "ура".
    На данный момент Qt это лучшее что я могу посоветовать для плюсов, т.к. с ним реально можно добиться результатов, bnet клиент вам в пример. Приемлемо это для вас или нет - решать вам, меня разработка UI на плюсах нисколько не отталкивает, но это уже личный опыт.
    Ответ написан
    8 комментариев
  • Студент и Низкоуровневое программирование?

    DIITHiTech
    @DIITHiTech
    Fullstack javascript developer
    ИМХО к сожалению, состояние нашей промышленности не способствует созданию таких рабочих мест, где широко нужны программисты "железячники". Если сравнивать с прикладными+веб, то их можно считать что и нету. Увы.
    Сам я тоже должен быть железячником по образованию, все с паяльниками сидел, но еще после школы понял что скорее всего это останется занятием для души бумажки о ВО, а основным, как и все, упорно заняться прикладным, через пару лет дошло что лучше веб. Просто не в том месте или не в то время я родился=) Писать даже индуский код на том же php для "забугра" в разы выгоднее.
    Вообщем себе рисовал картину так - минусы железячника:
    - производство стоит, отсталое
    - маленькое количество рабочих мест
    - относительно низкая ЗП, в несколько раз меньше по сравнению с другими
    - работа на внутренний рынок
    - сложное освоение, большие затраты на покупку демо-железяк
    - привязанность к конкретному месту производства
    - устроится сложно, работа часто "по блату"
    - сам один ты в поле не воин, ты не напишешь крутую прошивку, скажем умного дома, под устройство которого нет, сам не запустишь производство, сам не продашь... как бы этого не хотелось... разве что kickstarter=) и то команда нужна серьезная чтоб создать свое маленькое дело
    - там где есть хоть какое то производство -ужасная экология, жить в индустриальном районе не хочется, ну это так - придирки
    - мало шансов свалить в "загнивающийзапад" по рабочей визе

    Конечно, есть яркие исключения, но в основной массе оно примерно так...

    Может получиться как у меня - отучился на железячника, а все ровно параллельно сам учил прикладное и веб- круть, теперь я web dev с никому ненужными навыками программиста мк, системотехника и архитектора сетей=))
    Вообщем хорошенько еще подумайте=)
    Если бы у меня была машина времени- я бы вообще вернулся на 10 лет назад и сказал бы себе - "харе кодить, забей - сиди на лавке пей пиво, через 10 лет будешь ручным тестированием заниматься - там за месяц буш готов, мозг береги"=)))
    Ответ написан
    3 комментария
  • Какая математика используется в компьютерном зрении?

    @Elizavetta
    Matroid: gamedev/js-разработка
    Матан, линейная алгебра, численные методы, приближения, преобразование Фурье, функциональный анализ, ТВ, мат.статистика, статистический анализ, сигналы, мат. физика, но это неполный список.
    Внезапно может потребоваться почти вся математика университетского курса(+), так как одни разделы тянут за собой другие, если пытаться работать на уровне полного понимания происходящего.
    Ответ написан
    2 комментария
  • На чем лучше всего писать современые прикладныи приложения под Windows?

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

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

    @dmitryKovalskiy
    программист средней руки
    Вычисляйте остаток от деления на 10. Получите массив цифр с конца. Ну а дальше сравнивайте соседей и меняйте местами
    Ответ написан
    2 комментария
  • Самая оптимальная литература по изучению C++, для новичка?

    GavriKos
    @GavriKos
    Шилдта попробуйте. Излагает достаточно просто.
    Ответ написан
    Комментировать
  • Работа после армии: легко ли восстановиться и найти работу?

    ОФФ-топик: если не читал, то советую.

    Так получилось, что не служил, но работал/нанимал много раз вместе с людьми как раз после срочки. У всех по разному - кто-то быстро вливался и в работу и в коллектив - кто-то пытался устанавливать свои порядки "армейские", но понимания на гражданке этого не находил. Сейчас служба-то всего год - не думаю, что может возникнуть прям оторванность от цивилизации.
    Ответ написан
    1 комментарий
  • Как разделить содержимое монохромного изображения на отдельные файлы?

    @krox Автор вопроса
    аспирант, программист, исследователь
    Так как поступают ответы, напишу вариант, на котором я остановился и реализовал.
    1. В библиотеке OpenCV берётся алгоритм поиска контуров.
    2. Если контур удовлетворяет условиям по размерам (не шум и не слишком маленький) копируем этот контур на новое изображение
    3. По имеющимся координатам крайних точек контура просто вырезаем изображение из картинки
    4. Сохраняем результат в файл.
    Всё оказалось довольно просто
    Ответ написан
    1 комментарий
  • Как проверить, создают ли линии замкнутую геометрическую фигуру?

    Hazestalker
    @Hazestalker
    Объясню грубо
    1. Если линии пересекаются, то нужно найти точки их пересечения. Затем(отталкиваясь от одной точки) проверить пересекаются ли между собой линии пересекающие первые две, принадлежащие нашей точке
    bccca39528ca4cc78552d74f44705ab2.png
    2. Раз у нас есть координаты вершин, мы можем рассчитать углы данной фигуры. Три угла или два противоположных = 90, значит прямоугольник + одинаковая длина рёбер - квадрат
    По углам можно любую фигуру определить
    Обращайтесь, если нужна помощь)
    Ответ написан
    Комментировать
  • Программный подсчет машин с видео

    bonext
    @bonext
    Для учебных целей, кроме OpenCV, хорошо подойдёт MATLAB. Особенно если нужно быстро накидать прототип алгоритма.
    Ответ написан
    Комментировать