• Решение задачи совсем не пойму ее?

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


    А с массивом-то сделать можете?
    Ответ написан
    Комментировать
  • Чем распарсить строку на C?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    sscanf(str, "%d,%d,%d,%d,True", ...);
    Ответ написан
    Комментировать
  • Яндекс.Практикум C++ Что я делаю не так?

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

    to_string(32) - вернет вам "32" вместо пробела. Тогда уж можно делать (char)32 или static_cast<char>(32). Но ' ' - все равно лучше.

    И еще вы не выводите длину всей строки в конце - ведь там всегда заканчивается слово (может быть пустое).
    Ответ написан
  • C# Math правильно ли я делаю?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Да вроде все правильно. Скорее всего опечатка в задании где-то. Так бывает. Или где-то может быть сказано, что углы должны быть в градусах а не радианах. Тогда выражение под синусом/косиносом надо домножать на 180/pi.
    Ответ написан
    1 комментарий
  • Как равномерно разместить N юнитов на окружности?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    В полярной системе координат их позиции вычислить элементарно: у i-того солдата угол 2pi*i/n и радус фиксированный.

    Для перехода из полярной системы координат в обычную воспользуйтесь тригонометрическими функциями:
    x_i = x_o+cos(alpha_i)*r_i
    y_i = y_o+sin(alpha_i)*r_i
    Ответ написан
    1 комментарий
  • Какой алгоритм лучше использовать для нахождения всех перестановок?

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

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

    Т.е. вам надо найти путь из одной клетки в другую, пройдя по как можно меньшему количеству клеток. Можно ходить в 8 направлений - если пересечь угол, то можно за одну точку на ломаной перейти по диагонали.

    Немного порисовав вы поймёте, что ответ - миксимум из горизонтального и вертикального расстояний между начальной и конечной клетками.

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

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

    Поэтому, алгоритм простой - посчитать циклы по одному.
    Фактически, перестановка - это граф и вам надо подсчитать в нем количество компонент связности. Надо использовать DFS. Но граф очень простой, поэтому DFS выраждается в тупо цикл.

    Заведите массив флагов длинной с перестановку. Пройдитесь по всем позициям и, если текущая не помечена, запускайте от нее второй цикл, который пометит ее и перейдет в позицию по перестановке (row[i]) и пометит там и опять перейдет и так далее, пока не наткнется на уже помеченную позицию. Так вы побойдете один цикл и пометите все позиции в нем. Поэтому прибавьте 1 к счетчику, когда будете запускать внутренний цикл.

    В решении будет 2 вложенных цикла, внешний - удобнее всего делать for, внутренний можно тоже делать for или while, но в for будет вместо инкримента переход по перестановке. И эти 2 вложенных цикла суммарно обойдут все позиции по одному разу, поэтому время работы алгоритма - линейное.
    Ответ написан
    Комментировать
  • При запуске проекта на SFML выпадает ошибка?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Похоже какие-то ошибки работы с памятью.
    Вы где-то чего-то не так делаете: или за границы массива вылезаете, или делаете use after free, или еще какая-то ошибка.
    Если ваш код не большой, то приведите его (в тегах code!).
    Ответ написан
  • ValueError: invalid literal for int() with base 10: '', что делать?

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

    Везде, где вы читаете из файла делайте:
    l = f.readline()
    print("The line is: \""+l+"\"")
    n = int(l)


    Тогда сразу станет очевидно, что не так с файлом или кодом.
    Ответ написан
    Комментировать
  • Как работают пермутации (arrays)?

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Это рекурсивный метод генерации всех перестановок. Сначала рекурсивно генерируется перестановки для всех символов, кроме первого. Потом к каждой перестановке в каждую возможную позицию вставляется первый символ.

    Так, для генерации всех перестановок "abc", сначала рекурсивно будет получен массив {"bc", "cb"}, потом для каждого его элемента в ответ будет добавлена перестановка с "a" вставленным в позицию 0, 1 и 2: "abc", "bac", "bca" для первого элемента, и "acb", "cab" и "cba" для второго.

    Или вам не понятно, что делают reduce, slice, substring, concat, join?
    Ответ написан
    Комментировать
  • При запуске программы на sfml в release, выдает46 ошибок?

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

    wataru
    @wataru
    Разработчик на С++, экс-олимпиадник.
    Вам придется прочитать весь файл, отсчитать нужное количество строк, потом заменить кусок между двумя переводами строки на отредактированное значение, и в конце переписать весь файл. Можно немного соптимизировать и переписывать не весь файл, а только начиная с изменной строки. Используйте fseek чтобы переместится на начало строки/файла, fwrite, чтобы записать новые данные и ftruncate чтобы обрезать файл, если он стал короче.
    Ответ написан
    Комментировать
  • В чем моя ошибка изучения С++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Это нормально. Со временем основные конструкции запомните. А дальше, по секрету вам скажу, даже сеньеры иногда лезут в документацию (или смотрят на подсказки IDE), например, когда забыли порядок аргументов у какой-то стандартной функции.

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

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

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

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

    Вместо собственных list-ов, вы храните ребра в vector. По производительности будет даже быстрее из-за локальности. А добавление в вектор один раз кучи элементов работает за линейную сложность. Но если вам надо собственную реализацию, то вы всегда добавляйте в начало списка. Потому что рекурсивный поиск конца списка и добавление туда - это квадратичный алгоритм на ровном месте.

    Опишите ваш алгоритм словами, что должна делать функция findLength? Искать позицию заданного элемента в списке?

    Похоже у вас граф взвешанный, и единственный доступный вам способ в таком графе - это поиск кратчайших путей от каждой вершины до каждой. Тут хорошо подойдет алгоритм Флойда. Или, если у вас граф разряжен - Дейкстры.
    Ответ написан
  • Переменная char. Вроде, как заменил буквы, но текст не выводится. Почему?

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

    А вообще, судя по этому коду - бросайте программирование. Не для вас это. У вас там косяк в каждой второй строчке.
    Ответ написан
    7 комментариев
  • Как решить ошибку?

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

    Кстати, у вас в stock - мешанина какая-то. Часть методов (конструкторы, например) определены прямо в хедере, часть - в cpp файле. Не надо так делать.
    Ответ написан
  • Есть ли у c++ собственные возможности работы с графикой?

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

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Это или задача о замощении, или размена монет. В особо запутанном случае - это будет задача раскроя.
    Ответ написан