Задать вопрос
  • Что не так с кодом на C++?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    for (int i = 0; i<2; i++){
        group.PutCar(i,Car(marks[i],powers[i],costs[i],displaces[i]));
      }

    -- заполняет элементы группы 0 и 1
    group[2].Print();

    -- пытается напечатать элемент группы 2, не заполненный. Думаю, что дело в этом.

    Ещё пара глюков:
    void Group::Print(){
      for (int i = 0; i<sizeof(array); i++){
        array[i].Print();
      }
    };

    sizeof работает не так и тут делает не то, что вы ожидаете. Для количества элементов в группе используйте имеющийся в классе Group size.

    operator double (){
        int summ = 0;
        for(int i = 0; i < sizeof(array); i++){
        summ += array[i].getCost();
        }

    то же самое здесь.

    Традиционно добавлю, что правильным было бы использование std::string (в Car) и std::vector (в Group), но подозреваю, что это это было такое задание.
    Ответ написан
    Комментировать
  • Как выводить числа на семисегментный дисплей в Microprocesor Simulator 5v32?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    цифра три на левой части дисплея имеет код 9Е и чтобы вывести результат сложения 1 + 2 мне надо 3 как-то преобразовать в 9Е

    Типовое решение этой задачи -- через таблицу преобразования, где индекс -- это то, что нужно отобразить, а содержимое -- это то, что нужно записать в порт для отображения. Для вывода цифр от 0 до 9 и вашего дисплея таблица будет такой:
    0xfa, 0x0a, 0xb6, 0x9e, 0x4e, 0xdc, 0xfc, 0x8a, 0xfe, 0xde
    .
    Ответ написан
    1 комментарий
  • Почему вместо строки появляется мусор?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему вместо строки появляется мусор?
    size_t xpath_formatted_size = vsnprintf(NULL, 0, xpath, arguments);
      char* xpath_formatted = malloc(xpath_formatted_size);
      vsnprintf(xpath_formatted, xpath_formatted_size, xpath, arguments);


    Потому что 1) результат возвращаемый vsnprintf не включает конечный 0, а вот аргумент vsnprintf обозначающий размер буфера должен включать место для конечного 0. И 2) вызов vsnprintf(…, arguments) меняет arguments.

    Как это исправить?

    Как-то так:
    char* xpath_format(const char* xpath, ...)
    {
      va_list arguments;
      va_start(arguments, xpath);
    
      size_t xpath_formatted_size = vsnprintf(NULL, 0, xpath, arguments) + 1;
      va_end(arguments);
      va_start(arguments, xpath);
      char* xpath_formatted = malloc(xpath_formatted_size);
      vsnprintf(xpath_formatted, xpath_formatted_size, xpath, arguments);
    
      va_end(arguments);
      return xpath_formatted;
    }
    Ответ написан
    Комментировать
  • Как разархивировать архив tar.gz, в котором архив и т.д?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Studencheskaya32 --to-command -- это прикольно.
    Но мне больше нравится решение с -O:
    tar -xzvOf archive.tar.gz | tar -xzvO | tar -xzvO | … | tar -xzvO | tar -xzv
    Ответ написан
    Комментировать
  • Можно ли записать структуру в файл используя basic_ofstream?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Можно ли записать структуру в файл используя basic_ofstream?

    Можно, но для этого не нужно делать её тип аргументом шаблона basic_ofstream.
    Ответ написан
  • Что за странная константа?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Зачем он для такой строчки на 69, 70ой строчке добавляет к j такую странную константу.

    В конечном коде выглядит действительно загадочно. Если вызывать компилятор с ключом -fdump-tree-all (фиг знает, как сделать это на godbolt.org, я проверял локально), то уже в самом первом дампе можно увидеть, что if (arr[j - 1] > arr[j]) превращается в это:
    if (*(arr + ((sizetype) j + 1073741823) * 4) > *(arr + (sizetype) ((unsigned int) j * 4)))

    1073741823 -- это 0x3fffffff, 30 единичных бит, т.е. 30-битная -1. Дальше j + 1073741823 превратилось в
    add     r3, r3, #1073741824
    subs    r3, r3, #1

    т.е. в j + 1073741824 - 1. После умножения на 4 старшие два бита j теряются, но в чём смысл использования 30-битной -1 вместо 32-битной -- мне непонятно.
    Поскольку константа появляется ещё до начала архитектурно-зависимых преобразований, она фигурирует в выводе для всех 32-битных архитектур поддерживаемых gcc. Интересно, что это началось между gcc-4.6 и gcc-5, до этого в этом месте генерировался просто sub r3, r3, #1. Ещё интересно, что даже с -O2 эта константа остаётся в сгенерированном коде, а исчезает только с -Os. Выглядит как регрессия.
    Ответ написан
    Комментировать
  • Как правильно инициализировать массив в C?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    В этом коде проблема не в том, что массив d не инициализирован, а в том, что колическтво итераций цикла вывода массива d не зависит от того, сколько элементов было занесено в этот массив. Правильным решением было бы как-то их связать, например так:
    int i = 0, n;
    while (piece != NULL)
    {
        d[i] = piece;
        piece = strtok(NULL, " ");
        i++;
    }
    n = i;
    for (i = 0; i < n; i++) {
        if(i%2==0)
            printf("%s ",d[i]);
    }
    Ответ написан
    1 комментарий
  • Почему возникает такая проблема с динамическим массивом (Язык Си)?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    ошибка возникает на моменте сдвига элементов. Как ее исправить?
    data = (Student*)realloc(data, count * sizeof(Student));
    
        for (int i = count; i > offset; i--)
        {
            data[i] = data[i - 1];
        }

    Этот код пишет за конец массива, потому что если в массиве count элементов, то последний имеет индекс count - 1. Этот цикл должен быть таким: for (int i = count - 1; i > offset; i--)
    Ответ написан
    Комментировать
  • Почему система продолжает работать после выполнения команды?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Почему при выполнение данной команды ОС продолжает работать до момента перезагрузки?

    Я бы не сказал, что она "продолжает работать", но у нас, видимо, разные определения понятия "работать". Никакие новые исполняемые файлы в такой системе не могут быть запущены, потому что никаких файлов нет, а запущенные процессы -- да, могут продолжать выполняться и форкаться, пока им от файловой системы не нужны операции использующие имена файлов.
    Ну и, справедливости ради, надо отметить, что место занятое открытыми на момент выполнения команды rm -rf / файлами не будет освобождено и их содержимое не будет потеряно, пока они не будут закрыты. Можно будет продолжать читать и писать в них, в т.ч. ядро будет продолжать использовать их для реализации механизмов виртуальной памяти.
    Ответ написан
    Комментировать
  • Почему не работает функция fscanf?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    в функции main, почему то выводит мусор

    Значит дочитывает файл до конца и без ошибок конверсии. Такой формат: %32[^,] может записать до 33 байт (32 символа из файла + 0), что не влезет в такое поле: char title[32];. Если файл в кодировке utf-8, то байтов в полях может быть больше чем символов.
    Ответ написан
    Комментировать
  • Fibre Channel FC-2 Programming, как отправлять произвольные кадры?

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

    В linux есть драйвер scsi/qla2xxx, можно заглянуть в его список поддерживаемых PCI ID, чтобы понять, подходит ли он для этой платы. Если подходит, то можно почитать, как он взаимодействует с железом.
    Ответ написан
    Комментировать
  • Как переделать initrd (Altlinux 8 SP)?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    нужно выкинуть все лишнее из /lib/modules/5.10.144-std-def-alt0.c9f.2

    Это сравнительно легко сделать: нужно оставить только те модули, которые видны в lsmod после успешной загрузки.
    Ответ написан
    Комментировать
  • Почему не удается подключиться к Postgres(VirtualBox) из хостовой машины?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    в pg_hba.conf должно быть что-то типа того:
    host all all 0.0.0.0/0 md5
    host all all ::0/0 md5

    для приёма любых подключений с любого адреса.
    Ответ написан
  • Как подключить роутер 12в 1,5а к автомобильному аккумулятору?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    как подключить роутер: напрямую от акума или через какой-то преобразователь, чтобы брал 12в и выдавал 12в, а ток понижал до 1,5а?

    Можно напрямую. Он сам возьмёт нужные ему 1.5А.
    Ответ написан
    8 комментариев
  • Что делать с проблемой Job for apache2.service failed?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    дек 10 21:56:09 podd apachectl[2466]: AH00526: Syntax error on line 8 of /etc/a…
    дек 10 21:56:09 podd apachectl[2466]: Invalid command 'AssignUserID', perhaps m…

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

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как поменять порядок битов в байте C?

    Посмотреть какой бит стоит на каждом месте и поставить такой же на каждом новом месте?
    Можно обойтись без сдвигов. Удобно пользоваться битовыми операциями, но можно обойтись и без них. Это можно сделать одной чистой арифметикой. Для ускорения можно анализировать не отдельные биты а группы -- например по 2 или по 4 и выполнять для них замену по таблице.
    Ответ написан
    Комментировать
  • Почему переопределение метода без virtual -- это не переопределение?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Если в официальной доке с++ где-то написано "переопределение возможно тогда и только тогда, когда есть virtual у метода базового класса"

    Написано, ровно это: eelis.net/c++draft/class.virtual#2

    то почему именно так?

    Потому что это определение термина function override в C++. Для других вариантов взаимодействия имён функций есть другие термины.
    Ответ написан
    Комментировать
  • Как удалить все строки до n через sed?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как отредактировать это, чтобы работало?
    получаю n через grep
    Далее пытаюсь понять как удалить через sed все строки от 1 до n

    Можно всё это выполнить в одном скрипте sed:
    sed -i '0,/string:/d' file1
    Ответ написан
    2 комментария
  • Почему так читается текстовый файл?

    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.
    Ответ написан