• Как написать программу, циклически перебирающую набор транзакций?

    Teivaz
    @Teivaz
    Узнаю книжку Липпмана.
    В вопросе не полный текст задания.
    "Web-сайт ... содержит в каталоге первой главы копию файла Sales_item.h. Скопируйте этот файл в свой рабочий каталог. Напишите программу, циклически перебирающую набор транзакций проданных книг и отображающую их на стандартном устройстве вывода."
    Ссылка на файл заголовка битая, вот вопрос на стэк оверфлоу, там, кстати, есть и рабочая ссылка. Так что сначала было бы неплохо ознакомиться с предлагаемым кодом.
    Ответ написан
    4 комментария
  • Как можно задать размер map через консоль, чтоб не использовать const int (Алгоритм А стар)?

    Teivaz
    @Teivaz
    Для такого массива нужно выделять память в цикле, или сразу одним большим блоком, но записывать в массив указатели с шагом в строку.
    int** Allocate2dArray(int w, int h)
    {
    	int** a;
    	// сначала выделяем память под указатели на столбцы
    	a = new int*[w];
    	for (int i = 0; i < w; ++i)
    	{
    		// выделяем память под каждый столбец
    		a[i] = new int[h];
    	}
    	return a;
    }

    или так
    int** Allocate2dStraight(int w, int h)
    {
    	int** a;
    	a = new int*[w];
    	// одним махом выделяем память под все столбцы
    	*a = new int[w * h];
    	for (int i = 1; i < w; ++i)
    	{
    		// и просто раздаём адреса
    		a[i] = a[i-1] + w;
    	}
    	return a;
    }

    и удалять в обратном порядке.
    Ответ написан
    Комментировать
  • Хватит ли микроконтроллера ATMEL ATTINY13A для связки NRF24L01 и реле/датчика?

    Teivaz
    @Teivaz
    Я делал почти то же, только тиньку брал 25, потому что мне нужно было два таймера. А в остальном они похожи, а ещё отличается расположение портов на пинах.
    Но attiny25/15/13 вполне может работать с NRF24L01. По минимуму нужны ножки: MISO, MOSI, CLK и CSN. Остаётся как минимум один порт (или два, если отключить резет) для подключения чего-нибудь.
    Ответ написан
    Комментировать
  • Как начать разрабатывать 2d игры под iOS на cocos2d?

    Teivaz
    @Teivaz
    Литературу я вряд ли посоветую, но опытом поделиться могу. Процесс создания игры следующий:
    сначала создаётся документ с общим описанием игры, затем, в процессе бурного обсуждения документ обрастае деталями, подробностями, фичами и прочим. Получившийся документ называется ГДД (гейм дизайн документ). В нём должны подробно быть описаны все игровые режимы, Окна, возможности, переходы, состояния. Для создания какого-либо окна в удобном вам графическом редакторе создаётся фейк (просто картинка с желаемым результатом), затем художник разбирает фек на детали, дорабатывает их и передаёт геймдизайнеру, геймдиз в имеющейся тулзе создаёт гуи (если нужно) и отдаёт всё программисту, который складывает ресурсы в игру, прописывает в коде загрузку необходимых проектов, колбэки на кнопки и подобное.
    Я сам сейчас занимаюсь созданием игры с кокосом, только я использую cocos2dx (кросс-платформенный вариант на C++).
    Про гуи, левелам и анимациям. Для кокоса есть тулзы, я, например, использую CocoStudio. У неё есть модули для создание гуи, скелетной анимации и сцен. При этом тулза экспортирует проект как сцену в json формате + один или несколько атласов (которые сама собирает) и плисты к ним с описанием спрайтов. Всё что нужно для таких базовых вещей. А ещё можно в анимации вставлять частицы. Только вот немного глючит эта студия.
    Что же касаетс создания конкретного левела в игре, то тут нужно продумать игровую механику и отталкиваться от неё. Если левел не удаётся создать используя существующие тулзы (а скорее всего так оно и будет), то следует описать логику геймплея: выделить основные объекты, описать взаимодействие их, определить какие из них и что конкретно должно меняться от левела к левелу и вынести загрузку их во внешний файл (можно использовать обычные плисты, которые легко парсятся в словари, а можно использовать скрипты, кокос2дх поддерживает луа, только я пока им не занимался). Это позволит разделить труд (один человек может делать скрипт для конкретного левела, другой - доделывать логику), легко изменять параметры и баллансировать левелы без пересборки билда и вообще - это общепринятая практика.
    Ответ написан
    2 комментария
  • Битовая операция в C++ (n < max_n, тогда n; n == max_n, тогда 0;)

    Teivaz
    @Teivaz
    Если делать это для ускорения проверки условия, то имеет смысл когда n_max степень двойки.
    тогда максимальное значение будет выглядеть, например, так:
    0010 0000
    Любое число, которое больше чем n_max, будет иметь единицу в одном из старших разрядов.
    Тогда при наложении маски:
    1110 0000
    мы получим либо ноль (когда число меньше макисмального), либо некоторое значение (когда число больше или равно).
    Но это не имеет особого смысла, поскольку сравнение скомпилируется в две операции (если не считать перебрасывания значений из регистра в регистр) по такту каждая: вычитание из максимального значения текущего и проверка флага отрицательности результат вычитания.
    Ответ написан
    1 комментарий
  • Как передать указатель на массив в качестве аргумента функции?

    Teivaz
    @Teivaz
    Если всё-таки речь о С++, то массив можно объявить так:
    int myArray[50];
    или так:
    int* myArray = new int[50];
    ну или так:
    std::vector<int> myArray;

    И соответственно использовать в функциях так:
    void Sort(int array[50 ar]);
    Sort(myArray);

    void Sort(int* ar, unsigned int size);
    Sort(myArray, 50);

    void Sort(std::vector<int>& ar);
    Sort(myArray);
    Ответ написан
    1 комментарий
  • Как в C++ хранить объекты (либо указатели на них) в массиве (std::vector)?

    Teivaz
    @Teivaz
    А, ну и очевины вариант в стиле С
    std::vector<void*> containsAnyPtr;
    containsAnyPtr.push_back( (void*)(new MyClassOne) );
    containsAnyPtr.push_back( (void*)(new MyClassTwo) );
    containsAnyPtr.push_back( (void*)(new NotMyClass) );

    Только вопрос теперь в том, какой именно объект оттуда достанем. Пропадает строгая типизация, которая является фишкой С/С++.

    P.S.
    Можно немножко осиплюсплюсить:
    std::vector<void*> containsAnyPtr;
    containsAnyPtr.push_back( reinterpret_cast<void*>(new MyClassOne) );
    containsAnyPtr.push_back( reinterpret_cast<void*>(new MyClassTwo) );
    containsAnyPtr.push_back( reinterpret_cast<void*>(new NotMyClass) );
    Ответ написан
    1 комментарий
  • Как в C++ хранить объекты (либо указатели на них) в массиве (std::vector)?

    Teivaz
    @Teivaz
    Ну или чтобы не лезть в родственные связи можно использовать, например:
    std::vector<boost::any> containsAny
    Ответ написан
    Комментировать
  • Генерация дробного числа с заданной точностью на C++

    Teivaz
    @Teivaz
    Самый простой вариант

    #include <stdlib.h>
    
    double GetNormalizedRandomNumber(int digits)
    {
        double precision = pow(10, digits);
        assert(precision < RAND_MAX); // Precision is too high.
        double ret = rand() % precision;
        ret /= precision;
        return ret;
    }
    
    Ответ написан
    Комментировать
  • Dependent method type (C++)

    Teivaz
    @Teivaz
    Есть вариант. В смысле буст:: вариант.
    boost::variant
    Ответ написан
    Комментировать
  • Доступ к методу c++ объекта из c

    Teivaz
    @Teivaz
    Попробуй в обёртке забиндить функуцию при помощи boost::bind или std::mem_fun

    boost::bind<blah>(&blah::method, &obj);
    

    std::mem_fun<void, blah>(&blah::method);
    
    Ответ написан
    Комментировать
  • Что такое аудио с точки зрения программы

    Teivaz
    @Teivaz
    Если для простого цветного изображения каждая точка может быть представлена сочетанием трёх основных цветов (каждый из которых имеет разрядность от 0 до какого-то числа, 2^8, 2^12, не важно) то для аудио каждая выборка во времени определяется всего лишь одинм значением — амплитудой (которая, грубо говоря, тоже может принимать значения от 0 до какого-то максимального значения, 2^8, 2^16) Так что музыка в конечном счёте может быть представлена как одномерный массив, каждый элемент в котором соответствует определённому времени; в то время как изображение это трёхмерный массив, каждый элемент которого соответствует определённым координатам х, у.
    Можно разложить звук в базис синуса и косинуса применив преобразование Фурье. Тогда звук будет представлен как двумерный массив (амплитуда синуса, амплитуда косинуса) и каждая пара будет соответствовать определённой частоте, а не времени. Или можно разложить в немного другом виде — (амплитуда, фаз).
    Также есть другие представления музыки. Они могут быть разложены на разные звуковые дорожки, инструменты. Например, midi файлы, в которых, грубо говоря, хранится информация о том, в какой момент и как долго должна звучать определённая нота для определённого инструмента.
    Ответ написан
    1 комментарий
  • Допустим ли подобный минимализм в форме авторизации?

    Teivaz
    @Teivaz
    А мне очень нравится такой вариант. На некоторых сайтах нажатие на эту кнопку с пустыми полями приводит к тому самому двойному экрану, с регистрацией и повторной авторизацией/напоминанием пароля.
    Ответ написан
    1 комментарий
  • Какие книги почитать по темам компьютерной графики, компьютерного зрения, дополненной реальности, искусственного интеллекта?

    Teivaz
    @Teivaz
    По компьютерной графике с OpenGL могу посоветовать Donald D. Hearn, M. Pauline Baker «Computer Graphics with OpenGL». Если что, на русском языке точно есть третье издание.
    Ответ написан
    1 комментарий
  • Какие микросхемы/элементы использовать для измерения напряжения/тока/сопротивления?

    Teivaz
    @Teivaz
    Ещё для измерения тока можно использовать датчик тока на эффекте Холла. Например www.kosmodrom.com.ua/prodlist.php?name=sensortok&page=0
    Ответ написан
    Комментировать
  • Хорошая паяльная станция?

    Teivaz
    @Teivaz
    У меня дома стоит lukey 702, а в лаборатории lukey 868. Одна от другой отличаются только нагревательным элементом. У 702 он китайский и, следовательно, она немного дешевле, а у 868 фирменный качественный нагреватель. Оба работают отлично. Фен тоже хороший, только не плохо, что он не отсоединяется от станции. Насадки на фен не пробовал, а вот жала подходят и выбор хороший, любых размеров и форм, с микроволной и без.
    Ответ написан
    Комментировать
  • Создание равномерной не мерцающей подсветки?

    Teivaz
    @Teivaz
    Очень рекомендую к прочтению конкретно этот пост jimblog.me/?p=277 в рамках темы создания лайтбокса jimblog.me/?p=14
    Там используется призма от подсветки жк-монитора.
    Ответ написан
    1 комментарий
  • Загрузка видео >15 минут на YouTube?

    Teivaz
    @Teivaz
    Я тоже долго мучался, а всё из-за того, что у ютуба дебильная справка.
    Вот тут написано как увеличить время. www.google.com/support/youtube/bin/answer.py?hl=ru&answer=71673
    Ответ написан
    Комментировать
  • Ошибки авторизации и голосования на Хабре?

    Teivaz
    @Teivaz
    А бывало ли у кого-то что не получается коментарии писать? У меня часто бывает когда коментариев в статье ещё мало и пишу в основную ветку, а не ответ на чей-то.
    Ответ написан
    Комментировать