Ответы пользователя по тегу C++
  • Как обойти все исполнения программы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Посмотри ключик
    -fsanitize=thread

    и еще посмотри PVS Studio. Вроде у них был статический анализ таких ситуаций но я точно не уверен.
    Надо искать инфу.
    Ответ написан
    8 комментариев
  • Как сделать стрельбу под бит трека?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Думаю да. Нужно наверное отказаться от mp3 и сделать трекерную музыку.

    Я вот когда играл в Serious Sam -1 помню там когда enemies наполняли локацию - то и музыка
    как-то усиливалась и угнетала сильно. Но в Сэме наверное трекерная музыка была. Там проще
    было ритм и музыкальные партии задавать просто меняя семплы.
    Ответ написан
    3 комментария
  • Как оформить код?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В коде повторяется вектор векторов int. Это по смыслу - матрица. Вот можно создать свой тип матрица или после такой подстановки будет яснее и короче.
    Ответ написан
    Комментировать
  • Работа с изображениям, как создать своё на C++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В наше время уже почти никто не пишет такие библиотеки. Все вроде написано. Проблемы с писательством библиотек такие. Если ты кодишь на сях под Windows то ты полюбому захочешь как-то их отображать и тебе в библиотеку придется вводить сущности мира WinGDI например.

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

    По названиям нейросетей я ничего не скажу я их не знаю в именах. Поищи их названия в Python-библиотеках.
    Они на слуху. А потом он них - найдешь оригинальное название на сях.

    Посмотри еще в ImageMagic https://imagemagick.org/script/magick++.php может пригодится
    Ответ написан
    Комментировать
  • Сложно ли создать тг бота на c++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Мне кажется что проблема не в телеграм библиотеках а как всегда в классических вопросах С++.
    Контроль над памятью например. И если взять за формулу что ТГ-бот - это типичное реактивное
    приложение то преимуществ С++ здесь вобщем-то нет. Нету задач которые бы загрузили CPU.

    А если задачу развивать в части интеграции например с MQ/документными БД (Mongo) или с
    веб-апи криптовалют то окажется что С++ в такой интеграции стоит еще в 2 раза дороже
    и во времени разработки и в поддержке. А конечному пользователю вообще плевать на чем
    бакенд бота написан.

    И окажется в сухом остатке что наговнячить бота на Node или на Python будет дешевле. И поддерживать
    код тоже дешевле. Вносить изменения - легче и быстрее. Для бизнеса - вообще скорость внесения
    изменений в продукт - это метрика №1. Кто вышел с маркетинг акцией в срок - тот заработал денег.

    Если-бы я был бизнесом и хотел бы свой ТГ-бот то я-бы не вкладывался в С++ (хотя я уважаю этот язык).
    Я-бы нанял команду Ноде-Жс и все было бы норм.
    Ответ написан
    Комментировать
  • Как подключиться к Wifi на C++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Тебе работать с Wifi на С++ нужно будет только в одном случае - когда ты разработчик драйвера Wifi устройства.

    В остальных случаях - ты пишешь обычные приложения на С++ которые используют сокеты TCP/UDP, которые (сокеты) в свою очередь работают через стек технологий ОС для кидания пакетов в Wifi интерфейсы в соотвествии с правилами таблиц маршрутов.
    Ответ написан
    2 комментария
  • Не получается сделать exe. Почему?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Он скорее всего работает. Просто консоль так быстро появляетя и исчезает что ты не успеваешь разглядеть.
    Там сразу после печати Hello идет return.

    Добавь туда cin >> для того чтоб было какое-то ожидание от пользователя.
    Ответ написан
    1 комментарий
  • Как вывести буквы, которые используется наиболее кол-во раз?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Можно отсортировать массив букв любым алгоритмом. Тогда буквы выстроятся в серии.
    Например

    aaaaaabbccccccccccdeeeeggggff

    И тогда самая длинная серия и будет ответом.

    Антагонист этого метода - это сортировка подсчетом. Это то о чем писал Wataru.
    Оба метода - рабочие. Можно обсуждать тонкости которые в задаче не были заданы.

    Стоит ли их обсуждать? ХЗ
    Ответ написан
  • Почему в Java изменение интерфейса базового класса посредством модификации сигнатуры разрешено?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    Несмотря на то что java/c++ формально являются ООП языками, многие вещи
    с перегрузкой у них реализованы по разному. В случае с методом sound в Java
    скорее всего будет создано просто 2 метода (разные сигнатуры).
    Ответ написан
  • Где можно почитать/посмотреть о написании dll на c++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Классическое С++/dll программирование для прикладника теряет смысл. Весь прикладной и бизнес код
    пишут на .Net или Java
    . А там по большей части и dll - другие.

    Какой такой сегмент разработки может от вас потребовать именно знаний Windows/DLL? Я не знаю. Может
    gamedev? Там щас тоже все нишевое. Разделено на UE/Unity. Своя вселенная короче.

    Может антивирусы и ИБ? Ну не знаю. Эти ребята вобщем-то даже не программисты. У них - другие задачи.

    Вобщем не берите в голову. Университет едет по очень старым рельсам. И это вам скорее всего не нужно.
    Не дай бох вам еще там будут Delphi читать или Borland C++ Builder. Старые куколды блин. Никак не
    перестроются под рынок.
    Ответ написан
    Комментировать
  • Как продвигаться дальше?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вместе с С++ хорошо сочетается знания алгоритмов и железа.
    Попробуй для практики зарегистрироваться на codewars / leetcode и прочих задачниках
    и порешай задания. По железу. Поразбирайся с Arduino, Raspberry. Сделай что нибудь полезное.
    Ответ написан
    Комментировать
  • Как я могу конвертировать число в символ?

    mayton2019
    @mayton2019 Куратор тега Java
    Bigdata Engineer
    System.out.println((char)3);

    Так не надо делать. Это получение Unicode символа по коду 3.
    Оно сработает но с точки зрения code-review некрасиво и твоя команда
    будет тебя бить и чморить за такой способ кастинга.

    В java есть специальные литералы для работы с кодировками.
    Например для символа с кодом 3 (однобайтного типа ASCII)
    '\x03'
    Или например для кириллической буквы А в кодировке UTF-16
    '\u0430'
    Ответ написан
    3 комментария
  • Почему верхний левый угол всегда чёрный?

    mayton2019
    @mayton2019
    Bigdata Engineer
    А сделай так

    tessellator->Color(1.0f, 1.0f, 1.0f)->Vertex(0, 0);
    tessellator->Color(1.0f, 1.0f, 1.0f)->Vertex(width, 0);
    tessellator->Color(1.0f, 1.0f, 1.0f)->Vertex(width, height);
    tessellator->Color(1.0f, 1.0f, 1.0f)->Vertex(0, height);
    Ответ написан
  • Почему русские буквы не выводятся в C++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Кажется проблема имеет отношение только к Windows консоли. Надо проверить. Автор сделай так

    C:\>chcp
    Active code page: 437
    
    C:\>chcp 866
    Active code page: 866


    И запусти свой екзешник именно в ней. И потом еще попробуй вот так

    C:\>chcp  65001
    Active code page: 65001

    и тоже запусти
    Ответ написан
    1 комментарий
  • Как реализовать взаимодействие нескольких библиотек между собой на c++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Это преподаватель тебе такие задачи подкидывает?

    Загружай все три библиотеки и построй над ними полиморфизм через языковые возможности С++.
    Ответ написан
    Комментировать
  • (Вопрос без однозначного ответа) Почему в window socket 2 используется так много различных дефайнов и псевдонимов?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я тоже до конца не понимаю цели и задачи которые ставились для winsock2 но вот можно
    почитать аннотацию здесь https://learn.microsoft.com/en-us/windows/win32/wi...

    С моей точки зрения было время большого разлада между лагерем Microsoft и Unix. И вместо того
    чтобы просто позаимстовать сетевые библиотеки или купить лицензии, MS как всегда стал делать
    что-то свое, "сумчатое" и ни на что не похожее. Яркий пример Component-Object Model (COM).
    Нигде такого нет.

    Для чего создаватьtypedef struct addrinfo{}? Только ради того, чтобы не писать struct в Си?

    Да все верно. Именно для такого юзкейса typedef и создавался. Плюс еще можно примитивы определять.

    Для чего определять *PADDRINFOA

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

    Где-то спокойно используется int, а где-то используетсяtypedef unsigned __int64 UINT_PTR, опять же вместо того, чтобы просто писать unsigned __int64.

    Это очень старый технический долг языка С++ и его уже нельзя исправить. Дело в том
    что спецификация языка не объясняет какой разрядности должен быть int. Он может быть
    16, 32 бит в зависимости от целевого железа. По сути он - синоним регистра процессора.
    И когда мы делаем цикл от 1 до 10 и нам по сути неважна разрядность параметра цикла - мы просто заказываем
    int чтоб долго не думать. И компиллятор собирает очень быстрый и оптимальный код.
    sizeof(int), или константы в в limits.h могут дать подсказку по вашей текущей архитектуре.

    typedef unsigned __int64 UINT_PTR

    Здесь идет форсирование разрядности в 64 бита. Такие потребности возникают
    в момент когда у нас есть например жестко заданный формат (сетевой протокол
    или дисковый формат файла) и мы должны гарантировать что другие архитектуры
    микрокотноллеры, мобилы и прочее правильно смогут интерпретировать эту структуру.
    Тут еще и порядок байтов внутри слова тоже важен. В наше время даже есть сет
    стандартов на описание таких структур ASN, AVRO, Protobuf, Thrift.
    Ответ написан
    1 комментарий
  • Калькулятор C++ как убрать 1.33333e+06 подобные результаты вычисления?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Предположительно ты работаешь с типами данных float или double.
    Эти типы не имеют однозначного отображения в десятичную
    систему. Такова их природа.
    Ответ написан
    Комментировать
  • Как убедиться что атомарные операции будут выполнены точно правильно?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В данном исходнике нет проблемы атомиков. Но здесь есть проблема отсутсвия синхронизации потоков а и b.
    Нужно наладить синхронизацию и дальше атомики станут приносить ощутимую пользу.
    Ответ написан
    Комментировать
  • Как исправить код?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Эта программа считает определители 3 порядка. Теряется красота С++ и обобщение.

    Математически можно считать определители 4 порядка через миноры матрицы понижая размерности до тех
    пор пока мы не дойдем до 3 порядка рекурсивно. И тогда сработает формула с хардкодом

    a[1][1] * a[2][2] * a[3][3] + a[1][2] * a[2][3] * a[3][1] + a[2][1] * a[3][2] * a[1][3] - a[1][1] * a[2][3] * a[3][2] - a[1][3] * a[2][2] * a[3][1] - a[3][3] * a[1][2] * a[2][1];


    Так можно посчитать 5 и 6 порядок и выше.

    Очень жаль что автор не фокусируется на сути, называя "код" просто "кодом". А ведь это метод расчета чего-то конкретного.

    Представтье что музыкант любое произведение называл бы просто "нотами". Странно правда?
    Ответ написан
    Комментировать
  • Как начать программирование в среде Apache NetBeans?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Для С++ разработки вам нужен компиллятор. Это может быть clang, gcc или Microsoft C++.

    NetBeans создавался для Java разработчиков. Хотя он возможно и поддерживает С++ синтаксис но
    мне разработка на сях в нетбинсе кажется странной.

    Посмотрите в сторону Visual Studio Code. Ее все хвалят.

    Полного руководства скорее всего нет нигде и не будет. У сред - тысячи фич и описывать их бесполезно.
    Тем более что идет активная эволюция сред и плагины обновляются чуть ли не каждый день.
    Поищите в youtube уроки. Этого должно хватить для начала. А те ошибки которые вы видели - относятся
    больше к наличию компилляторов а не к самой среде.

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