Задать вопрос
  • Задание создания динамического массива до первого отрицательного числа, как это сделать?

    @res2001
    Developer, ex-admin
    Лучше использовать std::vector. Просто вводите числа в промежуточную переменную. После ввода каждого числа проверяете отрицательно ли оно, если нет, то добавляете число в вектор. Если число отрицательное и вектор не нулевого размера, то сортируете вектор с помощью std::sort и выводите вектор на экран. Все.

    Вместо вектора можно использовать и "сырые" Си массивы в динамической памяти. Алгоритм тот же, но при добавлении каждого нового числа вам нужно выделить новый массив большего размера, скопировать содержимое старого в новый, старый удалить. Для перевыделения массива можно использовать realloc(), она выполняет все эти операции. Вектор скрывает эти операции от вас и делает все то же самое, но без вашего участия, так же в векторе есть оптимизация, позволяющая делать меньше перевыделений памяти.
    Ответ написан
    Комментировать
  • Как получить вывод команды с терминала в переменную?

    @res2001
    Developer, ex-admin
    Через файл - это самый простой вариант.
    Более технологичный вариант - запускать процесс с перенаправлением потоков stdin/stdout/stderr в каналы (pipe).
    В этом случае можно в режиме "on-line" получать вывод от запущенного приложения и генерировать вход для приложения. Этот сложнее, но дает гораздо больше гибкости в работе с запускаемым процессом.
    Ответ написан
    Комментировать
  • Почему возникает ошибка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    invalid abstract return type ‘Axis<unsigned int>’
    Почему возникает ошибка?

    Потому что Axis<unsigned int> -- абстрактный тип, а ты пытаешься вернуть объект такого типа.
    Скажи, что конкретно в сообщении об ошибке непонятно?
    Что с этим делать?
    - если тип не должен быть абстрактным -- смотреть в его иерархию наследования, искать недоопределённые чистые виртуальные функции и определять их или выкидывать.
    - если тип должен быть абстрактным -- пересмотреть свои взгляды на жизнь и начать возвращать либо ссылки, либо указатели на объекты абстрактного типа.
    Ответ написан
  • Как правильно вывести/считать double C++/python?

    @lz961
    python
    D = ...
    print(f'{D:16.10e}')


    C
    D = ...
    printf("%16.10e", D);
    Ответ написан
    Комментировать
  • Как исправить ошибку линковки undefined reference?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Команда сборки:
    D:\mingw\mingw64\bin\g++.exe -fdiagnostics-color=always -g D:\running\code\parser.cpp -o D:\running\code\parser.exe

    Прости, но как по-твоему mingw должен из этой команды понять, что ты используешь какую-то библиотеку и слинковаться с ней?
    Тебе надо выполнить шаги по сборке библиотеки, а потом добавить её в свою команду сборки, типа того:
    D:\mingw\mingw64\bin\g++.exe -fdiagnostics-color=always \
    -g D:\running\code\parser.cpp \
    -L<путь куда ты установил libgq> -lgq \
    -o D:\running\code\parser.exe


    И я подозреваю, что поскольку gumbo-query это обёртка для gumbo, то когда ты успешно слинкуешься с libgq тебе прийдётся повторить эти шаги и для gumbo.
    Ответ написан
    1 комментарий
  • Стоит ли изучать алгоритмы в Python сейчас или можно потом?

    AgentSmith
    @AgentSmith
    Это мой правильный ответ на твой вопрос
    Без алгоритмов нет программиста. Есть только быдлокодеры.
    Я на собеседованиях всегда отшиваю тех, кто не знает алгоритмы и структуры данных
    Ответ написан
    5 комментариев
  • Как вычислить координату угла А прямоугольника?

    LoliDeveloper
    @LoliDeveloper
    Линейная алгебра как смысл жизни
    По моему
    Ax = Bx - length*cosC
    Ay = By - length*sinC
    Ax, Ay - координаты точки A
    C - угол
    length - расстояние от A до B
    Ответ написан
    1 комментарий
  • Как написать код для таблицы истинности функции на C++?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    = - присваивание
    == - сравнение
    Ответ написан
  • Что делать, если появляется непонятная ошибка после запуска c++ кода?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что делать, если появляется непонятная ошибка после запуска c++ кода?

    Пытаться понять её -- универсальный рецепт.

    это исходный код.
    thread my_thread1(&connecter);
    if(connfd == true)

    В этом месте две ошибки. Первая -- ты сравниваешь int connfd с bool true, а вторая -- ты делаешь это без уважения потоконебезопасным способом. Прямо скажем, у тебя тут гонка между main и connecter. Когда ты эту гонку исправишь, жизнь твоя, скорее всего, наладится. Непонятно, правда, зачем ты вызываешь accept в параллельном потоке вместо того, чтобы сделать это синхронно, прямо в main.
    Ответ написан
    Комментировать
  • Каким способом на плюсах можно скачать страницу сайта для чтения в оффлайн режиме?

    Тебе придётся:
    1. Сделать HTTP-запрос к хабру и получить html разметку
    2. Рекурсивно пройтись по html и css, загрузив все картинки и стили
    3. Сохранить все эти файлы, сохранив структуру. Попутно поменяв пути, чтобы браузер потом смотрел на локальные файлы, а не в интернет.

    С комментариями сложнее, так как они прогружаются динамически.

    Кмк, проще будет запустить полновесный браузер, пролистать всю страницу, раскрыв все ветки комментариев со спойлерами, и сделать печать в PDF.
    Ну и да, гораздо лучше с такой задачей справится какой-нибудь python или nodejs, вооружённые puppeteer или playwright
    Ответ написан
    2 комментария
  • Как из неизвестного числа находящегося в диапазоне вычесть, что бы получить минимальный неотрицательный остаток?

    @rPman
    Задача не ясна, что значит вычитать максимально много
    наиболее точное значение будет - само число

    если чтобы узнать число ты можешь только проводить эксперимент (т.е. у тебя черный ящик на вход которого подаешь число которое вычистается ящиком и он отвечает - ой нешмагло, сильно много вычло, то у тебя log от максимального значения числа попыток делением

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

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Ответ написан
    Комментировать
  • Как повысить точность вещественного деления в среде C++?

    15432
    @15432
    Системный программист ^_^
    Может вы выводите на экран с точностью в 4 знака? У double явно побольше точность
    Ответ написан
    1 комментарий
  • Гипотеза Била - можете объяснить, почему парень не прав?

    Ну в общем то тут надо сначала понять, что за Гипотеза Била.

    Гипотеза Била — гипотеза в теории чисел, обобщение великой теоремы Ферма: если A^x+B^y=C^z где A,B,C,x,y,z принадлежат множеству натуральных чисел и x,y,z>2 то A,B,C имеют общий простой делитель.


    В данном случае выражение
    128^5+32^7=8^12
    данную гипотезу не нарушает - все эти числа имеют общий простой делитель "2"
    Ответ написан
  • Что означает *&?

    Nipheris
    @Nipheris Куратор тега C++
    делает тоже самое что и передача простого int по ссылке в функцию?

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Не понимаю, откуда эта ошибка появляется


    Здесь написано, что create_huge_matrix принимает два аргумента, и второй имеет такой же тип, как тип элементов внутреннего вектора:
    template <typename T>
    void create_huge_matrix(std::vector<std::vector<T>>& matrix, T lowerLimit);


    а здесь первый аргумент типа std::vector<std::vector<double>>, а второй -- int:
    create_huge_matrix(matrix_s, 5);

    а здесь вообще только один аргумент:
    create_huge_matrix(matrix_p);
    Ответ написан
    Комментировать
  • Как описать перегрузку оператора умножения?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    перегрузка оператора должна скалярно умножать два массива. Под этим подразумевается, например: массив1 - 3,2; массив2 - 5,1, скалярное умножение: 3*5 + 2*1 = 17

    LabArray operator* (const LabArray& other) {
          double sum = 0;
            for (int i = 0; i < size; ++i) {
              sum += Array[i] * other.Array[i];
            }
          return sum;
        }

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

    Alexandroppolus
    @Alexandroppolus
    кодир
    Смотреть соотношение уже переданных заказов первой и второй службам. Если оно меньше 3/7, то передавать первой, иначе второй
    Ответ написан
    4 комментария
  • Как проверить введенное римское число на правильную запись?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Лень вспоминать C, держите вариант конечного автомата проверки римских цифр на JS.
    // Матрица переходов конечного автомата
    // -1 - допустимое конечное состояние
    // null - недопустимое состояние
    const dka = [
      [-1, 1, 5, 4, 10, 9, 15, 14], // 0
      [-1, 2, 5, 4, 10, 9, 15, 14], // 1
      [-1, 3, 5, 4, 10, 9, 15, 14], // 2
      [-1, null, 5, 4, 10, 9, 15, 14], // 3
      [-1, 8, 8, 7, null, null, null, null], // 4
      [-1, null, null, 6, 10, 9, 15, 14], // 5
      [-1, null, null, 7, 10, 9, 15, 14], // 6
      [-1, null, null, 8, 10, 9, 15, 14], // 7
      [-1, null, null, null, 10, 9, 15, 14], // 8
      [-1, null, null, 13, 13, 12, null, null], // 9
      [-1, null, null, null, null, 11, 15, 14], // 10
      [-1, null, null, null, null, 12, 15, 14], // 11
      [-1, null, null, null, null, 13, 15, 14], // 12
      [-1, null, null, null, null, null, 15, 14], // 13
      [-1, null, null, null, null, 18, 18, 17], // 14
      [-1, null, null, null, null, null, null, 16], // 15
      [-1, null, null, null, null, null, null, 17], // 16
      [-1, null, null, null, null, null, null, 18], // 17
      [-1, null, null, null, null, null, null, null], // 18
    ];
    
    // Алфавит
    const alphabet = 'MDCLXVI';
    
    // Разбивает строку на лексемы
    // (номера символов в алфавите, начиная с 1)
    // для отсутствующих символов возвращает 0
    const lexer = (str) => str.split('').map((l) => alphabet.indexOf(l) + 1);
    
    // Проверяет корректность числа в римской записи
    const check = (str) => {
      const lexems = lexer(str);
      let state = 0;
      let idx = 0;
      while (true) {
        const lex = lexems[idx] ?? 0;
        state = dka[state][lex];
        if (state === null) {
          return false;
        }
        if (state === -1) {
          return  idx === str.length;
        }
        idx += 1;
      }
    }
    Ответ написан
    2 комментария
  • Как отсортировать произвольные точки так, чтобы при проведении линии через них последовательно получился многоугольник?

    Alexandroppolus
    @Alexandroppolus
    кодир
    Если надобно без самопересечений, то подойдет упрощенная версия алгоритма выпуклой оболочки - просто сортируешь по углу относительно самой левой точки, и всё.
    Ответ написан
    Комментировать