• Почему так читается текстовый файл?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему-то как я не стараюсь всё записывается только в sportsmens[i].full_name,

    Поскольку ты используешь fscanf, а поля в твоём файле разделены пробелами, формат fscanf должен включать в себя пробелы чтобы избавиться от разделителей. Кроме того, имеет смысл проверить, что setlocale возвращает не-NULL, иначе он не повлияет на десятичный разделитель (и %f не сможет прочитать число с плавающей точкой записанное как 12,12).
    Ответ написан
    4 комментария
  • Почему возникает ошибка при компилации gtest?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    не могу понять в чем проблема
    ошибка: undefined reference to `CheckUP::checkUP(std::__cxx11::basic_string, std::allocator >&, float&)'

    Проблема в том, что ты не слинковал свой тест с кодом реализующим класс CheckUP.
    Ответ написан
  • Почему два идентичных файла ведут себя по разному?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Похоже на то, что hare run не нравятся виндовые концы строк (CR/LF). Можно использовать утилиту dos2unix для приведения концов строк в понятный hare вид (LF).
    Ответ написан
    2 комментария
  • Что не так с функцией на C++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    error C2835: user-defined conversion 'operator`double'' takes no formal parameters

    Он говорит тебе о том, что такая перегрузка: operator double (int limit) невозможна. Вторая ошибка -- это следствие первой.

    Определим в объекте Group две функции с одинаковым именем, например double Age(); и double Age(int limit);.

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Но не получается

    Ну да, не получается, потому что ты не понял алгоритма по ссылке до конца, потому что его изложение оставляет желать лучшего.
    - zeroCounter как я понял нужен для реализации шага "Remove leading "0" from X'", но эта реализация неправильная. К тому же она находится вне цикла while ( X != "0" ).
    - for (b in bits of X) // msb to lsb говорит о том, что b должен пробегать двоичные цифры, от старшего разряда к младшему, в формуле R = 2*R + b фигурирует значение разряда, а не его индекс, как в твоём коде.

    R, как я понимаю, должна быть очередная десятичная цифра получающегося числа?

    Это верно. Очередной младший разряд.
    Ответ написан
    Комментировать
  • Почему не возникает ошибка при вводе слова больше длины чем выделена память?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    должна возникнуть ошибка, но по факту её не возникает.

    А ты собери свою программу с санитайзером памяти (-fsanitize=address) и будет тебе ошибка.
    Обращение к памяти за пределами выделенных массивов -- это UB, отсутствие видимого эффекта -- допустимый вариант поведения при UB.
    Ответ написан
    Комментировать
  • Почему не собирается пакет gettext?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    /usr/lib/gcc/x86_64-lfs-linux-gnu/12.2.0/../../../../x86_64-lfs-linux-gnu/bin/as: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory


    Никита Савченко, я просмотрел по диагонали что LFS рекомендует собирать и не увидел в этом списке zlib. А это значит, что твои binutils подхватили ссылку на хостовый zlib, которого нет в chroot. Я подозреваю, что опция binutils configure --disable-shared или --enable-compressed-debug-sections=none решит эту проблему. Ну либо надо собрать и установить в chroot ещё и zlib.
    Ответ написан
    3 комментария
  • Почему iptables блокирует траффик?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В syslog обнаружил, что мой ip блокируется почему-то


    Так это же из вот этого правила:
    5       30  5264 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            limit: avg 5/min burst 5 LOG flags 0 level 7 prefix "iptables denied: "

    а поскольку оно стоит перед правилом ACCEPT для пакетов openvpn, то оно выводит и принятые пакеты openvpn.
    Перенеси его в конец цепочки input, чтобы оно выводило только реально отброшенные пакеты.
    Ответ написан
    5 комментариев
  • Как исправить ошибку "invalid use of incomplete type"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как правильно выстроить определения данных классов, что бы программа компилировалась?

    Перенести определения классов A и S после определения класса M, добавить объявление класса S перед определением класса D.
    Ответ написан
  • Уместно ли делать резервную копию локальных репозиториев git через robocopy?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Если каталог под управлением git скопирован целиком и содержимое копии идентично оригиналу -- всё будет ок.
    У рабочих каталогов созданных командой git worktree внутри нет истории, только текстовая ссылка на каталог .git. Поэтому если всю эту конструкцию скопировать в другое место файловой системы и попытаться использовать там, то могут быть неожиданные эффекты, поскольку worktree будет ссылаться по абсолютному пути на оригинал, а не на копию.
    Ответ написан
    2 комментария
  • Почему в С++ появляется Segmentation fault?

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

    Да вот же она: Tree* head{0}; -- в head у тебя NULL.
    А std::cin >> head->sizeOfChild пытается читать в поле объекта на который указывает head.
    Ответ написан
    Комментировать
  • Process finished with exit code 139 (interrupted by signal 11: SIGSEGV)?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Никак не пойму что за ошибка, и что она хочет от меня.

    Ошибка -- обращение к памяти, к которой нельзя обращаться, первая ссылка по запросу sigsegv в гугле.
    Хочет она от тебя чтобы ты веделил память для colonies[i].aparts перед тем как к ним обращаться.
    Ответ написан
    Комментировать
  • Заменить цикл на рекурсию - возможно ли в этом случае?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Возможно ли вместо цикла использовать рекурсию? Если да, то как?

    С таким распределением номиналов банкнот -- можно, типа того:

    static int foo(int s, const int *nom)
    {
        if (! s)
            return 0;
        else
            return foo(s % nom[0], nom + 1) + s / nom[0];
    }
    ...
    static const int nom[] = {500, 100, 50, 10, 5, 2, 1};
    printf("%d\n", foo(s, nom));
    Ответ написан
    Комментировать
  • Что бы вы хотели знать, когда перешли на линукс или первый раз поставили?

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

    - как устроена пакетная система: как искать пакеты, как по файлу найти содержащий его пакет, как получить список файлов пакета
    - как устроены настройки (что в /etc, что в /proc, что в /sys), как они применяются
    - как разбираться с проблемами: какие бывают логи, аудит, strace, gdb
    - как искать информацию: man, info, apropos
    - какие есть стандартные инструменты в этой системе: POSIX.1-2008: find, grep, kill, less, ps, ...

    что нужно делать, что не нужно

    - если нужны какие-то библиотеки -- сначала искать их в репозитории дистрибутива, только потом пытаться собирать их самому
    - если собрал что-то сам, что отсутствует в репозитории -- оформи это пакетом
    - не нужно пересобирать ядро, почти наверняка
    Ответ написан
  • Почему возникает ошибка "Process finished with exit code 139"?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему возникает ошибка

    Из-за лишней звёздочки вот тут в функции input_array: scanf("%d", *(b+i));
    Но и дальше пораскидано граблей: input_array выделяет память (b = (int*) malloc(a * sizeof(int));) и даже пытается её возращать, но неправильным типом и main это значение не использует. А поэтому в main b как был NULL так и остаётся. По-хорошему надо как-то так:

    int * input_array(int a){
        int *b = (int*) malloc(a * sizeof(int));
        for (int i = 0; i < a; ++i) {
            printf("array[%d] = ", i);
            scanf(" %d", b+i);
        }
        return b;
    }


    int main() {
        ...
        printf("Введите длину массива:");
        scanf(" %d", &a);
        int *b = input_array(a);
        min = find_min(b, a);
        max = find_max(b,a);
        average = average_function(min, max);
        ...
    }
    Ответ написан
    Комментировать
  • Как узнать, откуда прерывание?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    проблема заключается в том, что я не знаю, как получить состояние машины в момент прерывания, чтобы его сохранить.

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    void EcsSystems::Add(IEcsSystem* system) {
      _systems.push_back(system);
    
      if (IRunSystem* runSystem = static_cast<IRunSystem*>(system)) {
        _runSystems.push_back(runSystem);
      }
    }

    Это странное решение -- сначала потерять всю информацию о типе, а потом м помощью каста выяснять, а каким же он был. К тому же здесь очевидно имелся в виду dynamic_cast, потому что результат static_cast для не-NULL аргумента всегда будет отличным от NULL.
    Ответ написан
    Комментировать
  • Есть ли альтернатива cherry-pick для отмены коммитов?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    git revert умеет работать с диапазонами версий и продолжать/отменять процесс в случае конфликтов.
    Ответ написан
  • Откуда здесь NAN?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Помогите, пожалуйста

    Если MultiplyMatrices переписать как три обычных вложенных цикла, всё работает нормально.

    float* vMultiplyMatrices(const float* matrix_1, const float* matrix_2)
    {
            __m128 vector_2;//переменная для хранения значения второй матрицы
            __m128 result_vector;//переменная для записи итоговой марицы
            auto* result_matrix = (float*)_mm_malloc(N * N * sizeof(float), 16);//выделение памяти с выравниванием
    (2)     //memset(result_matrix, 0, N * N * sizeof(float));
            for (int i = 0; i < N; ++i) {
                    for (int j = 0; j < N; ++j) {
                            __m128 element_vector = _mm_set1_ps(matrix_1[i * N + j]);//4 позиции в одно значение
                            for (int k = 0; k < N; k += 4) {
                                    vector_2 = _mm_load_ps(&matrix_2[j * N + k]);//4 значение по адресу
    (1)                             result_vector = _mm_load_ps(&result_matrix[i * N + k]);
                                    result_vector = _mm_add_ps(result_vector, _mm_mul_ps(element_vector, vector_2));
                                    _mm_store_ps(&result_matrix[i * N + k], result_vector);
                            }
                    }
            }
            return result_matrix;
    }


    В отмеченной (1) строке ты загружаешь в result_vector неинициализированные значения из result_matrix и дальше используешь их в арифметике. Если раскомментировать memset (2), то выполнение доходит до конца без nan.
    Короче, разбирайся со своими векторными оптимизациями.
    Ответ написан
    Комментировать
  • Возможно отключить не-которые инструкций процессора?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Возможно отключить некоторые инструкций процессора?

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

    отключить инструкций процессора отвечающий за скорость майнинга

    …для майнинга используются те же инструкции, что и для воспроизведения видео, и проигрывания музыки, и просто арифметики. Невозможно глядя на отдельно взятую инструкцию сказать: "ага, тут происходит майнинг".

    умеют ли программы виртуализации такое проворачивать?

    qemu например умеет ограничивать набор инструкций доступных внутри виртуальной машины управляя флагами CPUID, см.
    Ответ написан