Задать вопрос
  • Не могу понять, правильно ли я ввел формулу?

    wataru
    @wataru Куратор тега C++
    TyHoPoGO, Почему так понимаете? Это была подсказка, что вы, помимо ошибки в бинпоиске, пытаетесь искать корень вне области определения функции. Даже правильный бинпоиск там начнет выдавать фигню. А функция задана правильно.
  • Почему программа прерывает свою работу на C?

    wataru
    @wataru
    GavriKos, тут switch с char, а не строками - это работает.
  • Почему программа прерывает свою работу на C?

    wataru
    @wataru
    Maksim Ivanov, Там, похоже перевод строки, который вы ввели после числа. Первые printf их из ввода не поглощают.
    Попробуйте читать числа с переводом строки: "%d\n".
  • Почему не работает перемещение в C++?

    wataru
    @wataru Куратор тега C++
    Марат Нагаев, Ну да, удаляйте только внутри Imgs. Снаружи указатель a надо не удалять. Можно после передачи его занулить. Можно вместо укзателя использовать unique_ptr, тогда все само удалится. Кстати, мешать C++ и malloc - плохая идея. Используйте new[] (и не забудьте тогда использовать unique_ptr<int[]>
  • Как найти 7 неизвестных?

    wataru
    @wataru Куратор тега Математика
    Lynn «Кофеман», я тоже сначала про нули подумал, но там на x и y делят. Пришлось их положить 1 и потом обнулить все числители.
  • Как найти 7 неизвестных?

    wataru
    @wataru Куратор тега Математика
    iskateli, У вас все уравнения линейные. Если переменных не очень много, то можно решать графически. Но с 7 переменными остается только "метод пристального взгляда". Иначе говоря, угадывание. Как в вашем случае, решение 1,1,1,0,1,0,0 - очевидно.
  • Где могла закрасться ошибка?

    wataru
    @wataru Куратор тега Алгоритмы
    floppa322, Комбинаторика сама по себе ответа никакого не даст. Она лишь поможет посчитать элементарные исходы. Условная вероятность тоже в итоге считает элементарные исходы, но иногда через нее проще рассуждать. Но по сути это все одно и то же: чтобы подсчитать вероятность события, надо взять количество благоприятных исходов и поделить на общее количество исходов.
    Вот как есть у вас геометрическая задача и вам надо подсчитать площадь заштрихованной области. Можно разными способами пилить искомую область на части. Но итог один.
    Вот в задачах на вероятность у вас тоже есть картинка - только многомерная и дискретная - где какая-то область заштрихована и вы тоже ищите ее "площадь". Условная вероятность - это вы берете и считаете площать фигуры как площадь какой-то другой фигуры минус лишнее. Комбинаторика - это как бы интеграл для подсчета площади. Классическая формула - это разбить на удобно считаемые части и отдельно каждую подсчитать.
  • Объясните пожалуйста работу этого кода?

    wataru
    @wataru
    Код в тег code оберните, а то вопрос удалят (кнопка </>).
  • Какая обёртка позволяет разыменовывать без неопределённого поведения?

    wataru
    @wataru Куратор тега C++
    makaleks, Я вам и говорю написать такую обертку.

    Это в коде одна проверка. Не многословно и не забыть никак, если обертку использовать.

    Ее в стандартной библиотеке, кажется, нет. Ибо, если, например, использовать unique_ptr, (который нужен по причине управления временем жизни объекта, а не вот этой вот), то нулевые указатели вообще никогда не придется разыменовывать. Также есть много разных случаев, где ваша проблема решается по-другому.
  • В чём ошибка вычисления бесконечно убывающей прогрессии с точностью до эпсилон?

    wataru
    @wataru Куратор тега C++
    Lexluter20, 6 миллионов итераций - это не так много. на с++ это 10-50мс на современном железе.

    Возможно, автор задачи подразумевал, таки, суммирование пока слагаемое не станет меньше епсилон. В этом случае итераций будет на порядок меньше, программа будет работать на порядок быстрее. Правда, сумма будет не такая точная.
  • C выдаёт ошибку при попытке сравнить 2 int?

    wataru
    @wataru
    justSMTH, strcat копирует строку в строку. Она вам тут не подходит. Подойдет что-то вроде result[i]=alph[mod];
  • Как удалить скобки в математическом выражении?

    wataru
    @wataru Куратор тега Алгоритмы
    mayton2019, Это называется Абстрактное синтаксическое дерево. В общем случае - да, надо грамматику парсить, но если у вас только арифметические операции и скобки, то разбирается элементарным алгоритмом за O(n^2), или чуть более хитрым за O(n).
  • Как удалить скобки в математическом выражении?

    wataru
    @wataru Куратор тега Алгоритмы
    mayton2019,
    Она - балансирует на грани "сделать, не делая полноценный парсер грамматик"


    Ну нет, для парсинга такого ограниченного арифметического выражения не надо полноценного парсера грамматик.
  • Как нарисовать кривую Серпинского (см. ниже), не используя графические библиотеки, а '*' или слешы?

    wataru
    @wataru Куратор тега C++
    void DrawCurve(char* output, int stride, int order) {
        if (order == 0) {
            output[0] = output[stride+1] = '/';
            output[1] = output[stride] = '\\';
            return;
        }
        int sz = (3 << (order - 1)) - 1;
        DrawCurve(output, stride, order-1);
        DrawCurve(output+(sz+1)*stride, stride, order-1);
        DrawCurve(output+sz+1, stride, order-1);
        DrawCurve(output+(sz+1)*stride+sz+1, stride, order-1);
        output[(sz-1)*stride+sz-1] = ' ';
        output[(sz+1)*stride+sz-1] = ' ';
        output[(sz-1)*stride+sz+1] = ' ';
        output[(sz+1)*stride+sz+1] = ' ';
        for (int i = 0; i < 2*sz+1; ++i) {
            output[i*stride + sz] = output[sz*stride + i] = ' ';
        }
        output[sz*stride+sz-1] = '[';
        output[sz*stride+sz+1] = ']';
        output[(sz-2)*stride+sz] = '_';
        output[(sz+1)*stride+sz] = '_';
    }
    
    int main()
    {
        const int order = 3;
        const int stride = 3 << order ;
        const int height = (3 << order) - 1;
        char field[stride*height];
        memset(field, 0, sizeof(field));
        DrawCurve(field, stride, order);
        for (int i = 0; i < height; ++i) {
            cout << field + i*stride << "\n";
        }
        return 0;
    }
  • Как из первых N натуральных чисел составить максимальное количество пар, суммы которых являются простыми?

    wataru
    @wataru Куратор тега C++
    Alexandroppolus, Да, похоже, так и надо. Только это не ДП, а умная жадность. Мы так доказали, что можно все floor(n/2) пар составить. Тут какая-то теорема о том, что среди K..2K обязательно есть простое число нужна (не помню, как она называется), чтобы доказать, что минимальное простое число, большее N будет меньше 2N. А значит можно всегда взять и откусить какие-то максимальные гири.
  • Экспорт файла SolidWorks для дальнейшего парсинга?

    wataru
    @wataru Куратор тега C++
    Я бы сделал так, прочитал файл и распарсил строчки AXIS2_PLACEMENT_3D, DIRECTION, CARTESIAN_POINT и CIRCLE. Можно поддерживать 4 разных мапа с ключами - номер строки, и данными оттуда. Что-то вроде map, map и map.

    При парсинге не надо никаких регулярок - просто разбиваете строку на токены по пробелам, первый - ключ ("#20"), второй должен быть "=", а третий - это тип строки. если он "CIRCLE" и т.д., то берете соответствуюие 1-3 токена в данные (можно float получить через функцию stof(). Для CIRCLE у вас одна строка - ключ (5-ый токен) и float - радиус (6-ой токен). Для Axis выделяете 3 cтроки - ключа. Для Direction и Cartesian_point вы выделяете 3 float.

    Потом проходитесь по всем CIRCLE, берете AXIS c нужным ключем, оттуда берете 3 строки c ключами для Cartesian Point и двух осей. Хотя оси, наверно, можно и игнорировать вообще. Потом в map-е для точки берете точку с нужным ключем. И вот у вас отверстие описывается радиусом, тройкой координат центра и двумя тройками координат осей. Оси, возможно, можно игнорировать. Все эти данные складывайте в новый класс. которые кладите в свой set. Оно автоматически дубликаты считать не будет. в конце его size() - это количество отверстий. И можно их все координаты вывести.
  • Экспорт файла SolidWorks для дальнейшего парсинга?

    wataru
    @wataru Куратор тега C++
    #357 = CIRCLE ( 'NONE', #49, 20.00000000000000355 ) ;


    А что написано в строке #49?

    Возьмите все 4 строки CIRCLE для одного отверстия и все 4 строки, на которые они ссылаются. Наверно, там будут отдельно записаны центры окружностей.

    Тогда стоит парсить все строчки CIRCLE и все строчки вида того, на что они ссылаются. Потом из них собирать тройки (координаты, радиус) и вот эти вот уникальные выдавать в ответ.
  • Экспорт файла SolidWorks для дальнейшего парсинга?

    wataru
    @wataru Куратор тега C++
    Artem Kirsov, Вы на весь файл смотрите. Может это и не отверстие.

    А вообще, можете реверс-инженирингом занятся. Подвигайте одно отверстие, если можете и смотрите, что в файле меняется.
  • Экспорт файла SolidWorks для дальнейшего парсинга?

    wataru
    @wataru Куратор тега C++
    Artem Kirsov, Ну структура там, так или иначе - как у всех 3d моделей. Полигоны/треугольники в пространстве. Или набор точек с координатами. а потом набор индексов, описывающих грани. Или набор граней заданных координатами точек.

    А вот как дырки искать - это отдельная очень сложная задача. В топологическом смысле? Вот сколько на этой картинке отверстий у объектов?

    Ее, наверно. можно даже решить, если у вас отверстия все вот такие - цилиндрическе в плоской модели. Но там все равно будет куча крайних случаев и исключений.