Задать вопрос
  • Вопрос про указатели. Правильно ли я понимаю?

    @res2001
    Не путайте объект вектора и данные вектора.
    Объект вектора - это некая дополнительная информация, необходимая классу vector для работы, например, количество элементов массива занятого данными, общий размер массива, указатель на массив, что-то еще.
    Данные вектора - это собственно массив данных.
    Так вот, данные вектора всегда лежат в куче, т.е. массив всегда выделяется динамически.
    А вот объект вектора может быть где угодно и в куче и на стеке.
    void func() {
      vector<type> name1;
      vector<type> *name2 = new   vector<type>;
     }

    В примере:
    name1 - объект вектора лежит на стеке.
    name2 - объект вектора лежит в куче, на стеке лежит указатель на объект вектора.
    Если определить вектор вне функции в глобальной области видимости, то объект не будет лежать на стеке - он будет находится в сегменте bss или data - это не стек и не куча.
  • Как решить ошибку (OS errno 2 - No such file or directory)?

    @res2001
    Возможно где-то в скрипте потерялся кусок пути:
    C: erver\data\mysql\data\
  • Можно ли создать пустую структуру, а потом её заполнить внутри функции?

    @res2001
    Acaunt, Приходите как сможете.
    Не плохо было бы увидеть задачу, которую вы пытаетесь решить.
    Сейчас мы пытаемся помочь вам в решении некоторой локальной задачи, которую вы сформулировали, пытаясь решить проблему глобальной задачи.
    Вероятнее всего, вы не правильно ставите задачу и формулируете проблему. Если вы озвучите общую глобальную задачу и покажете ваш код, ее решающий, то мы попытаемся найти реальную проблему и, возможно, поможем ее решить.
    Ваши попытки объяснить ситуацию без кода вообще никак не помогают, только еще больше запутывают.
  • Как развернуть Astra Linux с сохранением защиты оболочки?

    @res2001
    x86_64, ARMы и Эльбрусы официально поддерживаются. Так что видимо нет особых проблем установить на писюк с Байкалом.
  • Как сохранить текст из окна батника в txt файл?

    @res2001
    Михаил Компас,
    Получилось сохранить в txt файл таким кодом:

    Это обычное явление. Есть 2 стандартных потока вывода stdout и stderr.
    Когда вы делаете >output.txt или 1>output.txt вы перенаправляете stdout в файл. stdout имеет идентификатор 1. Если пишете 2>output.txt - перенаправляете stderr в файл.
    Какая программа в какой поток пишет не угадаешь, нужно тестировать. Многие программы пишут сразу в оба потока, как можно догадаться по названию потоков обычный вывод в stdout, а ошибки в stderr. С помощью перенаправления можно развести потоки в разные файлы. Бывает удобно.
    Есть и универсальный вариант: 1>output.txt 2>&1
    Тут в файл перенаправляется stdout, а stderr перенаправляется в stdout, таким образом весь вывод оказывается в одном файле.
  • Почему не работает пузырьковая сортировка двумерного динамического массива?

    @res2001
    War4, Т.е. этот код не ты писал?
    Правильно написанный приведенный участок кода должен менять местами 2 элемента массива (Arr[i][j + 1] и Arr[i][j]). У тебя этот участок кода написан не правильно и этого неделает. Т.е. вот эти 3 строки по факту никаких изменений в массив не вносят. Наверняка компилятор это все удалит при включенной оптимизации. Как может отсортироваться массив без его изменения?
  • T440p Lenovo, возможно ли установить ОС Windows 10 или 11 22H2?

    @res2001
    Alexander Gor,
    Windows 10 1803 совместимы с 22H2?

    Помнится, когда вышла Вин10, у меня был ноут на Вин8.1. Через год, когда для Вин10 уже вышли первые крупные обновления, я решил, что меня задолбала восьмерка и проапгрейдился до Вин10 с помощью стандартного WIndows Update. После обновления, все драйвера, работавшие на Вин8.1, продолжали работать на Вин10.
    А уж номера сборок в рамках одной версии винды вообще никак не влияют на драйвера, поэтому их никогда не указывают в драйверах.
    Кстати, Вин11, на мой взгляд, больше маркетинговый апгрейд, чем какой-то большой апгрейд ОС. Так что и тут драйвера, почти наверняка, встанут нормально. Хотя, видимо, с точки зрения маркетолога перемещение Task Bar в центр - это хороший повод для увеличения номера мажорной версии.
  • T440p Lenovo, возможно ли установить ОС Windows 10 или 11 22H2?

    @res2001
    Alexander Gor, Ок. У каждого свои критерии выбора.
    На счет драйверов - даже если с дровами от леново, что-то не заладится, пойдете на сайт производителей чипов и возьмете их актуальные драйвера. Правда иногда производители ноутов могут вносить какие-то свои изменения/настройки в стандартные драйвера.
  • T440p Lenovo, возможно ли установить ОС Windows 10 или 11 22H2?

    @res2001
    У меня другой ноут от леново, свежий 22 года выпуска. Все драйвера встали на Вин11 как родные. У меня даже мысли не было, что драйвера от Вин10 не встанут на Вин11 (возможно зря).

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

    @res2001
    Что у фасма какой-то свой синтаксис? Вроде у фасма синтаксис Intel. На сколько знаю есть ассемблерные синтаксисы Intel и AT&T для x32. Не силен в ассемблере.

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

    @res2001
    Можно запихнуть Materials в unordered_map, ключом будет ID.
    Другой вариант - считывать Materials из базы в vector. А в unorderd_map ссылки (или указатели) на объекты из вектора.
    Второй вариант может быть интересен, если поиск объекта надо будет вести не только по ключу. Тогда можно сделать несколько мапов со ссылками на одни и те же объекты из вектора, но с разными ключами.
  • Почему после билда CMake функции из других файлов не вызываются?

    @res2001
    cmake в итоге вызывает компилятор для сборки.
    Так что смотрите консоль с вызовами компилятора.
    Все ли библиотеки подключены, может есть ошибки при сборке и т.п.
    Если бы функции не было в сборке, то компилятор бы выругался на отсутствующий символ и исполняемый файл не собрался бы.
  • Почему в батник не берет элементы из переменной?

    @res2001
    Чтоб работали восклицательные знаки при раскрытии переменных надо где-то в начале добавить команду:
    SETLOCAL ENABLEDELAYEDEXPANSION
    Без нее восклицательный знак - обычный символ.
  • Как сделать факториал деление?

    @res2001
    gelo-147, 1. Если у вас ошибки при выполнении, то давайте сюда код с описанием ошибок
    2. Запишите на бумаге ваше выражение, например, для n=3 (или 4) и попробуйте упростить его - привести к обычной простой дроби.
  • Как убрать ошибки взаимодействия между классами?

    @res2001
    colorname, Что за книжка?
    Избавится от такой зависимости достаточно не сложно.
    Надо выбрать класс в котором меньше всего зависимостей от соседа.
    Например удалим зависимости в screen.h:
    Тогда из screen.h удаляем включение заголовка windows_mg.h.
    Возможно надо добавить в screen.h предварительное объявление класса Windows_mgr:
    class Windows_mgr;
    Как решили выше, объявление friend не нужно - удаляем. Реализацию методов Screen, которые используют Windows_mgr выносим в screen.cpp. В screen.cpp подключаем как screen.h так и windows_mgr.h.
    Таким образом зависимость перенесена в screen.cpp и теперь screen.h может быть успешно подключен в windows_mgr.h.
    Как-то так в общих чертах.
  • Как убрать ошибки взаимодействия между классами?

    @res2001
    Dmitrii, Может и не проблема, надо проверить. Но прагму надо хотя бы написать.
    colorname, Добавьте в самое начало обоих заголовков
    #pragma once
    include guard в этом случае надо убрать.
    И сообщите о результатах компиляции.

    Но правильнее все таки избавиться от такой перекрестной зависимости.
  • Как убрать ошибки взаимодействия между классами?

    @res2001
    colorname, У вас заголовки включают друг друга. В windows_mgr.h подключается screen.h, а в screen.h - windows_mgr.h. Это приводит к тому, что в screen.h не определен класс Windows_mgr и наоборот. Избавьтесь от этой зависимости.
  • Как в С++ получить все возможные двоичные числа определенной длинны?

    @res2001
    x88reg,
    В каком именно из циклов указывать 2^N?

    Ни в каком. У вас нет правильного цикла. Вообще вы решаете задачу ... через жопу, мягко говоря.

    Массив должен быть с одной размерностью равной 2^K (в вашем случае). Его элементам надо присвоить значения по порядку начиная от 0 (т.е. 0, 1, 2, ... 2^K - 1). Затем вывести эти значения в двоичном виде на экран.
    Реально тут можно обойтись и без массива. Но если надо с массивом - пожалуйста.
    Использование VLA - на ваше усмотрение. Я просто предупредил. Если ваш препод будет собирать вашу программу с другими ключами или другим компилятором - она может не собраться.
    Если нужны массивы, то стоит использовать динамический массив или std::vector.

    После ввода значение K следует проверить на попадание в допустимый диапазон. Для int диапазон разрешенных значений для К будет: [1; 31].
    Значение 2^K получается так: 1 << K
    На сколько я помню в потоках ввода/вывода С++ нет стандартного способа вывести число в двоичном виде. Поэтому придется писать самому. Это достаточно просто:
    int v = a[i]
    for(int j = 0; j < K; ++j) {
      if(v & (1 << j)) {
         cout << '1';
      } else {
         cout << '0';
      }
    }
    cout << endl;

    Оформите в виде функции и передавайте в нее очередное значение массива как v.
  • Как в С++ получить все возможные двоичные числа определенной длинны?

    @res2001
    1. 000 - то же возможное число
    2. В цикле [0; 2^N) (где N - длина числа в битах, то что ввел пользователь) инкрементируем переменную (начальное значение 0). Значение этой переменной до инкремента присваиваем очередному элементу массива.
    Размер массива, как можно понять: 2^N
    Останется только решить задачу с выводом целого числа в двоичном виде.

    Массив объявленный как у вас:
    int a[K][N];
    является VLA массивом (Variable-length arrays). В стандарте С++ нет VLA. Использование VLA в С++ является нарушением стандарта.
    То что у вас, возможно, программа компилируется означает, что вы используете gcc/clang с разрешенными расширениями. VLA в gcc разрешены по умолчанию в программах С++ как GNU расширение. Расширения можно выключить, задав строгое соответствие стандарту опцией -std=c++17 например.
    VLA есть в стандарте Си - там это вполне законный инструмент. В С++ программах лучше избегать их использования.