Задать вопрос
  • Как работает long long int в C++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Это просто 64 битный (обычно) тип. Сейчас процессоры умеют работать с такими числами напрямую, без "склеивания" двух 32 битных чисел.
    Ответ написан
    4 комментария
  • Как сделать так чтоб в консоли кода можно было водить градусы?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Чем градусы отличаются от сантиметров, килограмм или, допустим, количества камней при вводе?

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

    Со вводом разобрались. Осталось интерпретировать переменную как градусы. Как к ней прибавить 45 градусов? Как к 2 яблокам прибавить 3 яблока и получить 5 яблок? Градусы с градусами можно складывать точно так же. Тупо прибавьте 45 к числу в переменной.

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

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Ошибка
    Call to non-static member function without an object argument


    Если добавить static, сами уже проверили - ошибка исчезает:
    static void FileModifier::writeFile(QByteArray&& fileDataBuf)


    Внезапно, если добавить ключевое слово static, то функция перестает быть non-static. Какая неожиданность /s

    Погуглите, что ли, что static в C++ означает.
    Ответ написан
  • Алгоритм разбиения?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Алгоритм простой - рекурсивно генерируйте все разбиения.
    Текущий предмет может пойти или в одну из занятых кучек, или в первую пустую, если они есть.
    Так, первый предмет обязательно пойдет в первую группу. Второй может пойти в ту же или во вторую. И т.д.
    Чтобы не было пустых групп, элемент обязательно кладется в первую пустую, если их осталось столько же, сколько осталось элементов распределить. Ну, и, нельзя создавать новую группу, их уже, сколько надо. Удобнее распологать элементы с конца.
    Что-то вроде такого:
    def partition(n, k, answer):
        if n == 0 :
          yield answer
        cur_len = len(answer)
        if k-cur_len < n:
            for i in range(cur_len):
                answer[i].append(n)
                yield from partition(n-1, k, answer)
                answer[i].pop()
        if cur_len < k:
            answer.append([n])
            yield from partition(n-1,k, answer)
            answer.pop()
    
    for x in partition(4, 2, []):
        print(x)


    Вроде как set_partitions из пакета more-itertools делает именно то, что вам надо, но так-то алгоритм - всего несколько строк.

    Этот алгоритм переберет все разбиения без повторов, потому что групировка элементов однозначно задает и порядок групп (группа с 1 - всегда первая. Потом группа с минимальным элементом - вторая и т.д.)

    Edit:
    Если же вам надо разбить предметы по 1, 2 и т.д. групп сразу же, а не только на фиксированные k групп, то надо чуть поменять условия в коде - надо сделать return в начале, после yield, и можно будет ставить предмет в любую группу или в новую всегда. Параметр k будет не нужен.
    Ответ написан
  • Как перевести число в соответствующий ему символ?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    '111' - это что вообще? В одиночных кавычках пишут символы, а у вас там строка из трех.
    Ответ написан
  • Как подсчитать кол-во обменных операций в быстрой сортировке?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Да, не правильно. Вы от балды в случайных местах увеличиваете счетчик, на какие-то случайные числа (то 2, то 1, то 3?). Когда как вам надо же считать количество операций обмена.

    Кстати, по английски этот обмен - "swap".
    Ответ написан
    9 комментариев
  • Как правильно перевести GPS координаты из одной системы в другую?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Пока похоже, что первые 3 символа - градусы * 6.
    Потом 2 символа минуты, потом '0', потом 2 символа секунды. Последние 2 символа непонятно как переводятся в десятичные доли секунд. Есть подозрение, что вы ошиблись с координатами на гуглмапсах.

    Правда не понятно, как он будет восточную от западной и северную от южной отличать. Будут ли там минусы? Или последний символ может использоваться для обозначения направления.

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

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Зависит от того, что за алгоритм шифрования вы используете. В некоторых алгоритмах это просто невозможно. Вот вы где приватный ключ-то брали? Вот там публичный и получайте. Обычно приватный и публичный генерируются сразу парой.

    А так, если разберетесь, что там за алгоритм используется (в биткойне, судя по тегам?) и в каком формате данные в этом ключе записаны, то какой-нибудь Crypto++ будет содержать все необходимые вам утилиты (длинная модульная арифметика какая-нибудь). Но готовой функции GetPubicKeyFromPrivateKey скорее всего нигде не существует. Придутся самостоятельно писать всякую математику.
    Ответ написан
    Комментировать
  • Выдает то signal: illegal instruction core dumped то stack smashing detected terminated. Как исправить?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Строки ваши подлиннее сделайте. Вы там по 2 символа для каждой выделяете. Но надо еще место для закрывающего 0 оставить. Поэтому, если пользователь вводит более 1 символа, происходит переполнение стека.
    Ответ написан
    Комментировать
  • Нужно вывести данные из двоичного файла. Все выводит в консоль, но после завершения метода (именно после него) вылетает ошибка. Где она?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Скорее всего MyStruct содержит указатели. Может там std::string тип поля, а там внутри указатель на данные.

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

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Если нет пауз между буквами, то задача однозначно не решается:
    Например, "vz" и "3d" одинаково кодируются "...---.." ("...-- -.." и "...- --..").
    В худшем случае, неправильная интерпретация первых символов может сделать расшифровку в самом конце невозможной.

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

    Тогда надо разбить строку на отдельные "слова" - группы тире и точек, разделенные пробелами и каждую группу перевести в букву по таблице. Таблицу в идеале надо хранить в trie ("бор" по русски), но эта структура не реализована в стандартной библиотеке C++, поэтому можно воспользоваться просто std::map<std::string, char>

    Edit: Разумеется, таблица для обратного перевода должна быть отдельной переменной. Не получится смешать в одну кучу переводы и туда и обратно.
    Ответ написан
    Комментировать
  • Какая сложность под капотом у сравнения строка?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    O(1), если "var/www/project" фиксированна. Сравнение двух произвольных строк - линейная сложность.
    Ответ написан
    Комментировать
  • Какая сложность данного алгоритма?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Сложность: простой.

    Если вам нужна ассимптотическая временная сложность - то O(n).
    Эта сложность меряется в зависимости от размера входных данных. Какие у вас входные данные-то? Строка slug, url.

    Эти данные конкатенируются (O(n)) и передаются библиотеке. До 10 раз. Библиотека их парсит, делает dns запрос, открывает сетевое подключение к web серверу, получает данные, парсит ответ. Там тоже есть линейная, видимо, зависимость от длины строки. Ее надо распарсить, записать в сетевой сокет и так далее. Вот получение данных по уже установленному http соединению от длины строки не зависит, поэтому в сложности алгоритма не учавствует.
    Ответ написан
    1 комментарий
  • Как написать код, где надо узнать в каком диапазоне число(без if else)?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    По-скольку тут все диапазоны одинаковой длины, то можно формулой:

    n = (x - 30)/10;

    Тут есть проблема, что интервалы идут и после 6 и еще и в отрицательную сторону.

    Можно навесить на это сверху min/max так:

    min(6, max(1, n));

    Min и max реализуются без if - это известная задача, гуглите.

    Edit: Сначала не опнял вопрос, думал надо по заданию без if написать это.

    Все-равно, самый быстрый и простой код будет с формулой выше. Только можно проверить на принадлежность крайним интервалом через if:

    if (x <= 49) return 1;
    if (x >= 90) return 6;
    return (x-50)/10 + 2;
    Ответ написан
    Комментировать
  • Ошибка cannot read properties of undefined reading uri, как его исправить?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Vs code надо настроить, чтобы он мог запускать c++. В отличии от visual studio, это просто навороченный редактор кода.

    Гуглите "как настроить vs code для c++".

    Вам надо поставить компилятор и прописать его в launch.json
    Ответ написан
    1 комментарий
  • Как правильно сортировать файл?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Все правильно. Работа с файлом - на несколько порядков медленнее работы с памятью. Особенно медленен случайный доступ на hdd. Поэтому читать и писать по одному числу по разным адресам, как в сортировке, совсем медленно.

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

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Вы умножаете на 2. А надо возводить в квадрат, т.е. в степень 2 ("power").
    Ответ написан
    2 комментария
  • В чем причина проблемы? По какой то причине возникает ошибка о создании экземляра класса?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Русским по белому написано
    невозможно создать экземпляр абстрактного класса
    .

    Что такое "абстрактный класс" знаете?

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

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Обычно там в условии расписывают. Что-то вроде: при работе для n до 1000, получите 20 баллов; при работе для n до 100000 - 60; при работе для n до 10^9 - 100 баллов.

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

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Кажется, надо составить уравнение/функцию, которая говорит, что точка попала в данную фигуру. Фигуры, скорее всего, задаются цветом.
    Ответ написан
    Комментировать