Задать вопрос
  • Какое обьявление массива в c++?

    @Free_ze
    Пишу комментарии в комментарии, а не в ответы
    Массив - это непрерывная область памяти (буфер) определенного типа.
    С++ на уровне языка определяет для этого два средства: статические массивы (a[10]) и выделение блоков памяти, на которые можно ссылаться через указатель (int *a = new int[10];)

    Но, в отличие от многих других языков, C++ не котролирует выход за границы массива, в результате чего можно сделать так:

    int a[10];
    a[333] = 5; // запись в ячейку памяти 
    //по адресу 334 * sizeof(int) от начала массива.


    Кроме того, для массивов, расположеных в куче (выделенных с помощью new) нельзя определить их реальные размеры (для статических массивов мы можем сделать sizeof(a)/sizeof(int)). Кроме того передавать многомерные массивы в функции, оперировать с динамическими массивами (изменяющими размер в процессе работы) и многие другие проблемы. Для их решения существует класс std::vector, который дарит нам абстракцию над массивом в хипе.

    PS С С++11 появился еще std::array, который является абстракцией над статическим массивом.
    Ответ написан
    Комментировать
  • Что такое обобщение в c++?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Верно думаете.
    Ответ написан
    Комментировать
  • Можно использовать в качестве delimiter не char?

    @Xano
    Есть несколько вариантов
    1. Использовать в качестве разделителя несколько символов( например, "!HTML SHALL NOT PASS!" )
    2. Перекодировать содержимое data так, чтобы в нём не встречался ";" ( например, записать data в hex формате )
    3. Передавать несколько строчек
    Ответ написан
    1 комментарий
  • Почему важен высокий FPS в шутерах?

    @mhe_b_i7agjiy_i7pugymbiba
    Субъективно я вижу разницу в плавности между 60 и 120 или 75 и 120. 24 кадра не имеет отношения к человеческому мозгу, я думаю раньше просто пленку экономили. А 24 это такой минимум, ниже которого совсем хреново. Что бы картинка была идеально плавной, нужен моник 144 герц и видяха которая сможет такой фпс в среднем поддерживать. Для сравнения, возьмите старый элт монитор, там картинка будет намного плавнее любого 60гц жк монитора.
    Ответ написан
    Комментировать
  • Как создать массив с равноудаленными элементами?

    @volginn
    вот такая идея у меня
    например нам надо разместить:
    9-А
    6-В
    3-С
    во первых мы создаем массив который будет ответом
    во вторых мы создаем массив в котором будут храниться пустые индексы в выходном массиве

    и теперь собственно само заполнение:
    идем от тех элементов которых больше к тем которых меньше
    1)вставляем 9-А
    вычисляем коэффицент = количество свободных мест в выходном массиве/ количество вставляемых элементов
    К=18/9=2

    на данный момент у нас такая штука

    выходной массив
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18

    массив пустых индексов в выходном
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
    далее в 2,4,6,8,10,12,14,16,18 элементы вставляем А т.к. К=2

    выходной массив
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
    А А А А А А А А А

    массив пустых индексов в выходном
    1 2 3 4 5 6 7 8 9
    1 3 5 7 9 11 13 15 17

    ВТОРОЙ ШАГ
    считаем для В
    К=9/6=1,5
    получаются индексы для равномерности распределения стоит округлять в меньшую сторону
    1,5=1
    3=3
    4,5=4
    6=6
    7,5=7
    9=9
    получается что по этим индексам в массиве пустых мест лежат индексы тех мест куда надо вставить В
    получаем выходной массив такого вида
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
    В А А В А В А А В А В А А В А
    пройдя еще раз для тройки тоже самое получим выходной массив
    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
    В А С А В А В А С А В А В А С А В А
    Ответ написан
    1 комментарий
  • Где почитать про создание игрового искусственного интеллекта?

    BasmanovDaniil
    @BasmanovDaniil
    Геймдизайнер-телепат
    На aigamedev.com есть много хороших статей. Ещё посмотрите родственный сайт nucl.ai.
    Ответ написан
    Комментировать
  • Найдите, пожалуйста, ошибку в коде c++?

    MrNexeon
    @MrNexeon
    Уберите точку с запятой ; в конце строки for (counter = 1; counter <= 8; counter++);
    Ответ написан
  • Почему в USB 3.0 10 жил? Какой минимум контактов для USB 3.1?

    Aquarius-Michael
    @Aquarius-Michael
    Программист и железячник
    88197bc46d89432b8eba330b4cd6982c.PNGЭто нужно для разъёмов B-типа, а также micro. USB 3.1 Типа С предусматривает возможность зеркального подключения (чтобы не было суперпозиции при подключении) и плюс дополнительные линии, поэтому и кажется, что там больше.
    ee72291378704e3dad8c718b9db71ce5.PNG
    Ответ написан
    33 комментария
  • Почему не работает main?

    sim3x
    @sim3x
    https://www.google.com.ua/search?q=python+name+main

    stackoverflow.com/questions/419163/what-does-if-na...

    #f1.py
    def foo(): print('bar')
    
    def buzz(): print('buzz')
    
    if __name__ == "__main__": 
        foo()


    def foo(): print('bar')

    from f1 import buzz 
    buzz()
    Ответ написан
    8 комментариев
  • Где найти сообщество мэйкеров?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    github - сборник интересных opensource проектов различной сложности. Выбирайте и присоединяйтесь.
    Ответ написан
    9 комментариев
  • Как проверяется принадлежность точки многоугольнику методом углов?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Прочитайте вот эту статью: https://habrahabr.ru/post/144921/
    Должно стать понятнее.
    Ответ написан
    Комментировать
  • Как лучше организовать многопоточную архитектуру?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Из-за ошибок оборудования управляющий поток может завершить свою работу.

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

    @Mercury13
    Программист на «си с крестами» и не только
    После того, как отработает тело деструктора, для всех полей объекта автоматически вызываются деструкторы, в обратном порядке.
    У int и double деструкторы нулевые — но другие-то и не нужны.

    В каких случаях надо писать деструктор самим…
    1. Мы владеем каким-то ресурсом, но штатный деструктор его не уничтожает.
    • Простой (не умный) указатель и выделенная память — это хорошо описал sitev_ru .
    • Объект-блокировщик, например, мьютекса (мьютекс — примитив межпоточной синхронизации, не дающий зайти в определённые участки кода одновременно двум потокам).
    class Mutex {
    public:
      void enter();
      void leave();
    }
    
    class Lock {
    public:
      Lock(Mutex& aMutex) : mutex(aMutex) { mutex.enter(); }
      ~Lock() { mutex.leave(); }
    private:
      Mutex& mutex;
    }
    
    …
    Mutex mutex;
    { Lock lock(mutex);
      // всё, что здесь, выполняется внутри мьютекса.
      // Даже если выпадет авария, из мьютекса корректно выйдем.
    }

    2. Сложный порядок уничтожения. Односвязный список из std::unique_ptr будет работать и так, со штатным деструктором, но это чревато переполнением стека.
    3. Сложная структура владения, и при уничтожении надо автоматически отобрать объект у владельцев. По-чёрному используется в оконных фреймворках на манер VCL и Qt. Удаляем компонент — он автоматически отбирается у владельца.

    По опыту: если структуры данных выносить в отдельный объект (ну и использовать STL, где можно), 80% объектов Си++ будут с автоматическим деструктором.

    ЗЫ. По результатам прикидочных подсчётов в живом проекте, ≈150 файлов (реально файлов 219, но не все наши собственные; библиотечные деструкторы не учитывал).
    • Классов с настоящим деструктором — около 30. Большей частью системные (W32Cs — быстрый мьютекс Win32) или структуры памяти (Array1d, например). Из них в собственно проекте (не в личной библиотеке программиста) — три (!): один связан с автовладением чужой библиотекой XLSX, два — с фоновыми потоками.
    • Интерфейсов с пустым виртуальным деструктором — порядка 40.
    • И ещё деструкторы, автоматически добавленные Qt — по числу форм, ровно 20.
    • И единицы пустых деструкторов, добавленных по желанию левой пятки линкера.
    Ответ написан
    Комментировать
  • Как организовать хранение настроек?

    GavriKos
    @GavriKos
    Перегрузите класс Application, там сможете получить контекст и инициализировать ваш класс хранения настроек. Перегрузку application делаете синглтоном, и делаете в нем геттер на настройки. Все - можно работать из любого класса.
    Ответ написан
    2 комментария
  • Как передать в фунцкию пустой аргумент?

    @fireSparrow
    Можно сделать вот так, чтобы функция работала для произвольного числа аргументов:

    def build_graph(x, *arg):
        for a in arg:
            # Цикл отработает столько раз, сколько передано аргументов после x
            # перебирая их по одному
            # и подставляя каждый из них в качестве 'a'
            plt.plot(x, a)
        #Всякие украшательства, подписи осей, легенда для графика и проч.
    Ответ написан
    1 комментарий
  • Почему проскакивает cin?

    @Fil
    Судя по вашему логу, поломалось на: "Enter person sex(Male,Female):Male"
    Так как тип Sex - пользовательский, то для него определена перегрузка оператора >>. В файле Sex.h, который вы не показали, должно быть объявлено что-то вроде:
    std::istream& operator>>(std::istream& stream, Sex &sex)
    и там должно производиться корректное чтение и обработка введенного значения (т.е. строки "Male" или "Female" и соответствующее заполнение объекта sex)
    Ну, навскидку, примерно так:
    std::istream& operator>>(std::istream& stream, Sex &sex)
    {
    	std::string s;
    	stream >> s;
    	if (s.compare("Male") == 0)
    		sex = Male;
    	else (s.compare("Female") == 0)
    		sex = Female;
    	else
    		sex = Unknown;
    	return stream;
    }
    Ответ написан
    Комментировать
  • Разделить окружность на равные части?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Math.Cos и Math.Sin принимают угол не в градусах, а в радианах.
    Замечание - расстояние между любыми двумя отрезками на вашем рисунке - ноль, так как они все имеют общую точку.
    Ответ написан
    2 комментария