Ответы пользователя по тегу C++
  • Тонкости Компиляторов. Почему в классах с++ не требуется объявление функции до вызова?

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

    mayton2019
    @mayton2019
    Bigdata Engineer
    Если сфокусироваться на решении задач про созданию простой двухслойной нейросети то тебе
    нужна матрица и вектор и операции над ними. И активационная функция. И функция обучения.

    Вот это все
    neuron
    layer
    network

    я-бы на твоем месте не делал. Это уже архитектура и интеграция. Если развивать проект дальше.

    И ты должен сам себе ответить на вопрос - что ты хочешь изучать. ООП или нейросети.
    Нейросети это тяжелая тема. Там много экспериметов. Много разочарований. Много работ
    дата-инжениринга по сбору и фильтрации входных данных. И этого всего настолько много
    что для ООП там уже сил не остается. Тоесть твоя декомпозиция задачи на 3 класса на старте
    тебе ничего пока не дает. Но обязывает тебя очень многому.

    Я-бы предложил делать прототип в олипиадном стиле.

    По поводу примерв. На гитхабе я находил много туториалов и пробных нейросетей на сях
    созданных в рамках обучения
    . Я искать их не будут. Я думаю ты сам найдешь.
    Ответ написан
    2 комментария
  • Почему в С++ не работают 2 цикла for?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ты наверное новичек?

    Переменную не рекомендуется дважды использовать в разных ролях в одном блоке кода.
    Ты-же не в ассемблере пишешь? Верно? Зачем тебе эта экономия. Создание новой переменной -
    безопаснее и надежнее. Хороший компиллятор уже сам разебертся где оптимизировать а ты
    - просто напиши чортов правильный код.

    И не забывай инициализировать. И не забывай про scopes.

    for(int i = 0; i < n; i++) {...}

    Иногда профессионалы могут использовать переменную дважды для достижения какой-то другой
    цели. Тут надо смотреть use-case.

    Но Quod licet Iovi, non licet bovi. Тебе пока не позволено. Научись сначала просто
    писать код без ошибок а потом уже делай трюки.
    Ответ написан
    2 комментария
  • Как отобразить байт в двоичном виде?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Программист С++ должен уметь работать с битами. Сдвигать влево-вправо. Делать булевы операции.
    Тем более что ты там сериал-порты собрался крутить.

    Вот сам алгорим
    https://stackoverflow.com/questions/111928/is-ther...

    От него уже можно и форматировать массив и перегружать "птичку влево".

    Qt - хорошее корбочное решение. Но твой вопрос должен был пойти не от Qt.
    Ответ написан
    Комментировать
  • Как нарисовать кривую Серпинского (см. ниже), не используя графические библиотеки, а '*' или слешы?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Самый простой путь - рисовать эту картинку внутри матрицы (растр).
    А потом перевести элементы этой матрицы в псевдографику https://en.wikipedia.org/wiki/Box-drawing_character

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

    Рисование слешами или зведочками возможно. Но это ASCII art. Иногда выглядит красиво
    а иногда вообще нечитабельно.
    Ответ написан
    4 комментария
  • Как найти минимальный ограничивающий параллелепипед?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Я не уверен что стоит вообще искать идеальное решение. Особенно для 800 точек. Задача
    пахнет комбинаторной со всеми вытекающими.

    Я-бы предложил дать программе время (секунд) или количество итераций через которые
    она должна выдать почти-минимальный параллелепипед. Но мы при этом понимаем что это не самый идеальный.

    Для малого числа точек (8) можно построить выпуклую оболочку. И попробовать прикладывать
    первую грань параллелепипеда к каждой грани выпуклой оболочки. А оставшиеся грани мы можем
    получить вращением параллелепипеда до тех пор пока bounding volume не будет минимален.
    Учитывая дискретность выпуклой оболочки, поворот тоже может быть дискретным. Например там
    проверить штук 20 углов. Вот как-то так.
    Ответ написан
    2 комментария
  • Неверная компиляция классов C++ в Unreal engine 5?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Начни с простого. Сделай новый проект в UE и сымитируй одну ошибку. Так проще разбираться.
    Ответ написан
    Комментировать
  • Есть ли хорошие пошаговые туториалы проектов на С++ для новичков?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Обычно С++ в вакууме не существует. Его учат сразу применительно к программированию UI под Windows,
    или к Unreal Engine, или к сетевому программированию под Linux/Unix. Или еще более специфичный
    сегмент - сетевое оборудование и микроконтрллеры. Это неизбежно.

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

    Тоесть в самом вопросе ты должен сам решить куда ты дальше со знаниями С++ пойдешь.

    P.S. С++ за 14 дней... - это завсегда можно найти.
    Ответ написан
    3 комментария
  • Где ошибка в коде?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Вот тут как-то странно написано.
    if(m == 'd') racket.x + 1;
    if(m == 'a') racket.x - 1;


    Если хочешь чтоб результат сохранился то надо или инкремент написать или выражение с присваиванием
    racket.x = racket.x + 1;
    Ответ написан
    2 комментария
  • Почему если выносим конструкции из шаблонной функции, нужно заново прописывать тип и шаблон?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Декларация класса и реализация его методов могут лежать в разных файлах исходного кода (*.h, *.cpp)
    Ответ написан
    Комментировать
  • Как параллельно подгружать файлы в C++?

    mayton2019
    @mayton2019
    Bigdata Engineer
    У тебя должна быть shared memory для всех потоков-участников этого процесса.
    И один из потоков (главный) должен заранее планировать что какие-то части
    файлов должны находится в shared memory в нужное время. Технически
    для C/C++ это решенная задача. Тут единственное что интересно - это
    обсуждать логику главного потока. Тоесть когда и в какой момент времени
    главный должен решать что подгружать. А может он передумает и решит
    что надо срочно выгружать потому что сюжет игры меняется. Или игрок
    будет бегать между 2 левлами через портал и постоянно перегружать
    уровни туда-сюда.
    Ответ написан
  • Не работает простой код хотя он правильный в чем может быть проблема?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Так вроде лучше

    for (int i = 0; i < 10; i++) {
            cout << i << endl;
    }
    Ответ написан
  • Как обойти все исполнения программы?

    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.
    Оба метода - рабочие. Можно обсуждать тонкости которые в задаче не были заданы.

    Стоит ли их обсуждать? ХЗ
    Ответ написан