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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как проверить скорость работы функции main()? в микро(нано) секундах?

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

    Напрашивается вариант представить результирующие строки записями в N-ричной системе счисления, где заданные буквы есть цифры от 0 до N-1, тогда задача сводится к выводу однозначных чисел от 0 до N-1, двузначных от 0 до N²-1, трёхзначных от 0 до N³-1. Запись в N-ричной системе легко получить, используя остаток от деления и деление.

    #include <vector>
    
    std::string gen(std::vector<char> alphabet, std::size_t idx, std::size_t digits)
    {
    	std::string ret(digits, alphabet[0]);
    
    	std::size_t alphas = alphabet.size();
    	while (digits--)
    	{
    		ret[digits] = alphabet[idx % alphas];
    		idx /= alphas;
    	}
    	return ret;
    }
    
    void gen_and_out(std::size_t n, std::vector<char> alphabet)
    {
    	std::size_t numbers = 1;
    	std::size_t alphas = alphabet.size();
    	for (std::size_t i = 0; i < n; ++i)
    	{
    		numbers *= alphas; // на каждом шаге чисел в alphas раз больше
    		for (std::size_t cur = 0; cur < numbers; ++cur)
    		{
    			std::cout << gen(alphabet, cur, i + 1) << std::endl;
    		}
    	}
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	gen_and_out(3, std::vector<char>({ 'a', 'b', 'c'}));
    }


    Второй вариант - это представить эти строки как запись числа в особой системе счисления без нуля - с цифрами от 1 до N. В этом случае легко преобразовать такую запись в число - ∑aᵢ×Nⁱ, а вот обратное преобразование должно учитывать, что у нас нет нуля, тогда если остаток получился равным нулю, цифру нужно взять N.
    В отличие от первого варианта, здесь нет отдельных циклов для однозначной, двузначной и трёхзначных записей, так как результаты идут подряд, за "c" следует "aa", за "cc" - "aaa", и так далее.

    #include <vector>
    
    std::string gen(std::vector<char> alphabet, std::size_t idx)
    {
    	std::vector<char> ret;
    
    	std::size_t alphas = alphabet.size();
    
    	while (idx)
    	{
    		std::size_t cur = idx % alphas;
    		if (!cur) // нет нуля
    			cur = alphas;
    		ret.push_back(alphabet[cur - 1]);
    		idx = (idx - cur) / alphas;
    	}
    
    	return std::string(ret.rbegin(), ret.rend());
    }
    
    void gen_and_out(std::size_t n, std::vector<char> alphabet)
    {
    	std::size_t numbers = 1;
    	std::size_t alphas = alphabet.size();
    	for (std::size_t i = 0; i < n; ++i)
    	{
    		numbers *= alphas;
    		numbers += 1;
    	}
    	for (std::size_t i = 1; i < numbers; ++i)
    		std::cout << gen(alphabet, i) << std::endl;
    }
    
    int _tmain(int argc, _TCHAR* argv[])
    {
    	gen_and_out(3, std::vector<char>({ 'a', 'b', 'c' }));
    }


    На закуску, как та же задача решается на Haskell:
    gen alphas n = concatMap (`replicateM` alphas) [1..n]
    main = mapM_ putStrLn $ gen "abc" 3
    Ответ написан
    Комментировать
  • Как должен выглядеть конструктор для класса с другим классом в качестве поля в C++?

    Если под "объект" вы подрозумываете ссылку на экземпляр класса B, то необходимо создавать вручную:
    class A
    {
         B *value;
    public:
         A()
         {
              value = new B(/*параметры*/);
         }
    };


    Если нет(value-type) и нужно передать параметры в конструктор В, то можно так:
    class A
    {
         B value;
    public:
         A():value(/*параметры*/)
         {
              //и далее тело конструктора
         }
    };
    Ответ написан
    6 комментариев
  • Стоит ли писать свой сервис для синхронизации заметок в своем приложении или воспользоваться dropbox'ом?

    Taraflex
    @Taraflex
    Ищу работу. Контакты в профиле.
    Храните все у себя - сможете целевую рекламу в заметки подсовывать.
    Ответ написан
    1 комментарий
  • Стоит ли писать свой сервис для синхронизации заметок в своем приложении или воспользоваться dropbox'ом?

    alexclear
    @alexclear
    A cat
    Даже при использовании DropBox или Google Drive возникают вопросы, которые придется решать. Как хранить заметки - каждую в своем файле, либо все вместе? Если каждая в своем файле - то как сообщать приложению об их изменении? Очевидно, надо поддерживать версионность в имени файла. Если все заметки лежат в одном файле - получается, для синхронизации его нужно качать каждый раз целиком? Быстро ли это будет работать через мобильного оператора? Что будет, если одну и ту же заметку отредактировать одновременно из двух разных мест?
    Мне кажется, наличие своего API, если оно правильно спроектировано, дает дополнительный уровень абстракции, независимый от хранилища. Конечно, DropBox или Google Drive за свой API не поставишь, но можно взять S3 или другое облачное хранилище.
    Ответ написан
    Комментировать
  • Насколько реально отреверсить dll на cpp?

    alexclear
    @alexclear
    A cat
    Она будет очень далека от оригинала, даже если подобное и удастся. Во-первых, компилятор применяет оптимизации при создании машинного кода. Во-вторых, если DLL собрана без debug symbols, то оригинальные имена переменных в ней вообще не хранятся. В-третьих, если при разработке были использованы шаблоны (templates), то восстановить оригинал не удастся вообще, компилятор вычисляет темплейты на этапе компиляции, в рантайм эта информация попадает уже преобразованной.
    Ответ написан
    Комментировать
  • Почему не работает программа?

    GavriKos
    @GavriKos
    char ch;
    printf("Введите какой-нибудь символ: ");
    scanf_s("%c", &ch, 1);

    Вот так должно работать. Читать тут:
    http://msdn.microsoft.com/query/dev12.query?appId=...
    Ответ написан
    Комментировать
  • Не могу использовать операции ветвления в Qt?

    @AlexP11223
    Что вы хотите достичь такой странной конструкцией? С чего вы взяли, что clicked() должно возвращать bool? Компилятор же и говорит, что оно void (и вообще это сигнал, его только emit'ить можно или connect'ить к нему слот).
    Ответ написан
    2 комментария
  • Не могу использовать операции ветвления в Qt?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    ui->okbutton->clicked() судя по всему возвращает void. Дальше читать тексты ошибок.
    Ответ написан
    Комментировать
  • Как реализовать данный цикл правильно?

    @Lol4t0
    Лишняя точка с запятой:

    if(ostDay == ostYear || ostMonth == ostYear);
                                               ^^^^^


    И все-таки rem, remainder, а не ostatok :)

    И еще совсем не обязательно перебирать все года, когда можно сразу найти только те, которые нужны

    int minN = std::min(remDay, remMonth);
    int maxN = std::max(remDay, remMonth);
    for(year = 201; year <=211; year++)
    {
            cout << year << MinN << '\n' << year << maxN;
    }
    Ответ написан
    Комментировать
  • Какую игру написать на Qt (для курсача, нужен совет)?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Вам нужна игра по системе принятия решений: игра "жизнь", "змеиный бой"...
    Кто знает аналоги - добавляйте комментариями.
    Ответ написан
    Комментировать
  • Какую игру написать на Qt (для курсача, нужен совет)?

    AloneCoder
    @AloneCoder
    [object Object]
    Тетрис!
    Ответ написан
    Комментировать
  • Какую игру написать на Qt (для курсача, нужен совет)?

    Csklassami
    @Csklassami
    Текстовая, пошаговая RPG - наверно самая популярная игра среди начинающих программистов. К примеру есть класс Warrior со своими свойствами, от него наследуется класс Player. Ну и по мейнстриму, добавляете таверну, где продаются всякие штучки-дрючки(зелье, меч и т.д.), казарму с выбором типа солдат. Осталось найти место для Qt и полиморфизма. Ок, что если сделать это в небольшом окне - где при атаки соперника на передний план выходит картинка врага, потом ваша и т.д. Ну и тут можно задействовать пару Qt-шных классов. Теперь про полиморфизм - вы пишите виртуальную функцию attack( ), которая будет одной для всех типов войск, как противников, так и союзников. Можно придумать, что-то еще. имхо, 2нед. будет достаточно, чтобы реализовать это. Удачи! Отпишитесь, что придумаете в конце))
    Ответ написан
    Комментировать
  • В чем отличия C++ и C# ?

    @DancingOnWater
    Изучал C# после 5 лет C++.

    2)Синтаксис C# - Си-подобный, но различий прилично.
    3)С нуля вполне возможно переключится, но по первости делать многие вещи вы будете не так, как предлагают разработчики языка.
    4) Да, есть. Про C# уже сказали, а для C++ есть Qt

    Начинать вообще всегда сложно, но мое мнение - лучше с плюсов. Если начнете с шарпов, то зашорите себе мозги конкретно.
    Ответ написан
    Комментировать
  • Как записать значения в массив?

    0neS
    @0neS
    1) Объяснить, почему так делать неправильно?
    if () {
        if () {
            if () {
                if () {
                    ...
                } else {
                    $var = ...
                }
            }
        }
    }
    echo $var;

    2) Не храните пароль в куках! Тем более в незашифрованном виде!
    3) Почитайте про DRY.
    4) Используйте pdo, функции mysql_ устарели и небезопасны.
    Ответ написан
    3 комментария
  • Вы знает сайты, где контент скроллится в смартфоне?

    сама делала плагин для скролла jquery.jscrollpane
    Ответ написан
    Комментировать
  • Вы знает сайты, где контент скроллится в смартфоне?

    Alexufo
    @Alexufo
    противоречивый, сложный, весь компьютерный.
    quirktools.com/screenfly

    Если хочется, это есть в любом браузере современном.
    Ответ написан
    Комментировать
  • Обнаружил sql- уязвимый код. Какие возможности? Как воспользоваться?

    @Steely
    Ваши личные данные, ссылка на этот вопрос и другая информация отправлены в соответствующие органы для проверки правомерности ваших действий.
    Ответ написан
    Комментировать
  • Есть ли рускоязычная среда програмирования?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    я не думаю что вам будет понятнее такой код:
    класс ПростойКласс {
        приватно:
            свойство строка названиеПеременной
        публично конструктор (строка названиеПеременной) {
             контекст.названиеПеременной = названиеПеременной;
        }
        // ...
    }
    
    ПростойКласс[] массивКлассов = создать ПростойКласс[10];
    пока (беззнаковое целое итератор = 0; итератор < 10; итератор++) {
        массивКлассов[итератор] = создать ПростойКласс("строка передаваемая в конструктор);
    }


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

    Тут так же. Знание самого языка не поможет вам понять смысла конструкций типа for.
    Ответ написан
    3 комментария