Задать вопрос
  • Как настроить сборку для линковки двух разных версий одной библиотеки?

    @MarkusD Куратор тега C++
    Вадим Ушаков , да, есть. Но сперва тебе надо показать не скриншот с ошибками, а лог сборки проекта.
  • Как сделать нейросеть на unity?

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

    Ну не микроскопом же это делать, правда? :)
  • Неадекватно большое значение?

    @MarkusD Куратор тега C++
    дмитрий шевченко, максимальное значение, все верно, 32767.
    а в моем случае это значение должно быть 1661

    Должно быть, но не является. Сколько раз и какие числа складываются в cost?

    Сперва у тебя есть строка short min=10000,, потом следом за cost += min; я вижу строку min = 100000;. Какое из присеваемых min значений неправильное?
    Мне кажется - второе, т.к. оно приводит к переполнению знакового целого и вносит в твой код UB. Но вопрос к тебе, как к автору кода. Может быть тебе стоит отказаться от short, хотя бы в виду того что все операции у тебя все равно проходят через integer promotion.

    В нашей практике есть такой полезный инструмент: отладчик кода. Он позволяет выполнять трассировку, т.е. построчное исполнение кода с контролем его контекста. В решении данной твоей проблемы трассировка может спасти твое время.
  • Неадекватно большое значение?

    @MarkusD Куратор тега C++
    дмитрий шевченко, давай начнем с того, что напишем прямо здесь максимальное значение, которое может хранить переменная с типом short int.
  • Метод Жордана-Гаусса в среде с++: как реализовать?

    @MarkusD Куратор тега C++
    pasha-boss , здесь таких людей нет. Такая постановка вопроса нарушает П5.12 регламента работы сервиса.
    Обратись на фриланс, поставь задачу, назначь цену выполнения, с тобой свяжутся.
  • Действие присваивания, элементу динамического массива, внутри функции, присваивает это значение всем копиям массива. Что делать?

    @MarkusD Куратор тега C++
    yunikeil , в твоем коде нет копий массива.
    В твоем коде есть выделение памяти под массив массивов в главной функции, после чего идет передача указателя на эту память в функцию prog. Внутри prog этот указатель пишется в еще две переменные и все. Память массива массивов у тебя одна для всего твоего процесса.
  • Какая IDE удобнее и проще для плюсов?

    @MarkusD Куратор тега C++
    Максим Иванов , инструмент всегда выбирается от задачи.
    Опиши свою задачу как можно подробнее.
  • Как исправить ошибку "идентификатор "to_string" не определен" в Visual Studio?

    @MarkusD Куратор тега C++
    Василий Банников, люди, в основном, просто отказываются ломать глаза об скриншоты с кодом. Т.е. на слона ни кто не смотрел.
    Кому глаза не жалко, тот читает со скриншотов.
  • Как исправить ошибку "идентификатор "to_string" не определен" в Visual Studio?

    @MarkusD Куратор тега C++
    omerkhan , сперва тебе нужно исправить нарушение П3.4 и П3.8 регламента работы сервиса.
    Код запрещено публиковать в изображениях. Лирические отступления в вопросе лишние.
  • Как расширить массив с++ (добавить элемент)?

    @MarkusD Куратор тега C++
    дмитрий шевченко, не стоит удивляться, стоит изучать документацию. Например, библиотеку контейнеров.
    Ну и книги подходящие. Например: Леена Аммерааля или Яцека Галовица.
  • Где взять заголовок graphics.h?

    @MarkusD Куратор тега C++
    Mercury13, все верно. Любой кто видел здесь c++ код без оформления, так или иначе, догадывается что нужно обратиться к исходнику вопроса чтобы увидеть код целиком.
  • Какие компоненты для установки выбрать в Visual Studio 2022 Чтобы изучить сам язык C++?

    @MarkusD Куратор тега C++
    Владимир Коротенко, вот и не начинай холивар, не зная текущей обстановки дел. :)
    Тебе лучше сперва освежить знания касательно студии. Твои "доводы" лет на 10 устарели, примерно как Android Studio на базе Eclipse.
    Выбор инструмента всегда идет от задачи. Человек сделал свой выбор от своей задачи, твое предложение другого выбора выглядит уже как холивар.
  • Где взять заголовок graphics.h?

    @MarkusD Куратор тега C++
    Василий Банников, у Mercury13 есть скилл рентгеновского зрения :)
  • Какие компоненты для установки выбрать в Visual Studio 2022 Чтобы изучить сам язык C++?

    @MarkusD Куратор тега C++
    Владимир Коротенко,
    почему допустим не Eclipse

    Все просто. Eclipse тормозная и полностью дисфункциональная по сравнению со студией.
    Без плагинов Eclipse уже не блещет скоростью сопровождения разработки, а с плагинами и вовсе не радует.
    Не радует у Eclipse уже даже скорость загрузки от старта и до первого экрана. Студия запускается за 3-5 секунд, Eclipse - около 40 секунд. За это время можно уже и забыть зачем ее открывал.
    Зачем пользователю C++ советовать написанный на Java инструмент, когда он может взять себе инструмент написанный на C++?

    Например Android Studio

    Это не так. Android Studio разработана на базе IntelliJ IDEA от JetBrains. Уже очень давно.
  • Исходный файл не находит соответствующую функцию, как исправить?

    @MarkusD Куратор тега C++
    zenz,
    в общем написать свою функцию remove_copy

    Смысл фразы "Remove Copies" буквально означает удаление копий. Возникают вопросы: откуда будут удалены копии, копии чего нужно удалить, как именно удалять копии и так далее. Из параметров алгоритма с таким именем сразу будет ясно что копии удаляются из переданного диапазона и удаляться будут те копии, которые соответствуют переданному аргументу. В стандарте такой алгоритм называется std::remove_if[?].

    Цель функции была скопировать ненулевые элементы одного контейнера в другой

    Такая функция не может называться "Remove Copies", это противоречит смыслу этой фразы.
    Такая функция может называться или "Filter by Condition", или "Copy If Condition". Собственно, в стандарте такой алгоритм называется std::copy_if[?].

    Понимаешь разницу смыслов? Ты хочешь копировать элементы по условию, а не удалять копии элемента.
    Грамотное отражение смыслов конструкций в их названиях лежит в самой основе всей инженерии ПО. Этому лучше начинать учиться как можно раньше.
  • Исходный файл не находит соответствующую функцию, как исправить?

    @MarkusD Куратор тега C++
    zenz, небольшой совет тебе на будущее.
    П3.8 регламента запрещает публикацию текста в изображениях. Многие люди, как и я, просто отказываются вчитываться в том мыло, которое ты опубликовал. Лично мне мои глаза дороже ответа тебе.
    Поведение в нарушение правил бросает обществу вызов, поэтому такое поведение и называется вызывающим. Я просто советую тебе не заниматься этим.

    Окно вывода ошибок не всегда является информативным. В твоем случае куда более информативным будет являться лог сборки проекта. И там, в твоей ситуации, действительно больше написано чем ты показываешь. Я от тебя ожидал ошибки именно из лога сборки.

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

    @MarkusD Куратор тега C++
    Sergo Zar, и тебе спасибо что отнесся к моим словам с пониманием.

    delete[] arr, temp;
    Тут используется operator , (), поведение которого по умолчанию возвращает только правый операнд.
    В твоем коде утекает arr. Разбей эту строку на две, в каждой из которых удаляй конкретный массив.

    void pushBack(T value)
    Логика работы этого метода должна быть такой:
    1- увеличить длину вектора на один;
    2- увеличить емкость вектора если длина стала больше емкости;
    3- переместить в последнюю ячейку вектора состояние объекта value.

    При этом, процесс увеличения емкости должен быть такой:
    1- изменить емкость согласно закону роста емкости;
    2- создать блок памяти размером новой емкости и локально сохранить его указатель;
    3- переместить все значения ячеек старого блока памяти в новый;
    4- удалить старый блок памяти;
    5- записать новый блок памяти из локального указателя в состояние вектора.

    У тебя поведение этой функции не вписывается в оговоренное. Именно в ней имеется основная проблема. Вообще по этой функции видно что сокращенными или неосмысленными именами ты себя сам запутываешь. Этого легко избежать если использовать более говорящие имена в коде.
    Основными элементами состояния вектора являются: блок памяти элементов - elements_memory или memory_block (Второе менее предпочтительно, но тоже понятно. Первое будет понятно очень хорошо); емкость блока памяти - memory_capacity или capacity; длина вектора - elements_count или length или size (последнее менее всего предпочтительно, но канонично относительно реализации вектора); закон роста емкости и закон аллокации элементов.
    Последний в стандарте представлен как std::allocator. Закон роста емкости обычно вписывают прямо в реализацию как функцию роста емкости.
    Ключевыми функциями вектора являются: рост емкости - reserve (только рост, емкость не уменьшается); изменение длины - resize (длину можно и уменьшать); очистка - clear и вставка в конец - push_back.
    Это все - говорящие имена, раскрывающие через себя суть существования конструкций в коде. Я советую тебе стараться тоже подбирать такие имена, которые сразу будут раскрывать смысл существования конструкции.
    Код void pushBack(T value) нужно просто переписать, в текущем коде ломается целостность состояния вектора. Именно поэтому у тебя вектор не работает со строками. Текущий код выполняет buffer overrun прямо на ровном месте потому что ты сперва сделал length++;, а потом уже clon();, в котором цикл вышел за пределы памяти arr.

    T& operator[](int i)
    Очень тяжелый код. Тебе не нужно использовать исключения там где ты можешь справиться конструкциями ветвления. Ситуация в этом коде усугубляется еще и тем, что конструкции ветвления тебе приходится использовать аж дважды: сперва под блоком try, а потом еще и в catch.
    Тебе будет лучше поставить ассерт с проверками индекса, после чего вернуть элемент по индексу.
  • Почему мой вектор не работает со строками?

    @MarkusD Куратор тега C++
    Sergo Zar , я все понимаю, у тебя уникальный стиль исполнения и уникальное видение проблемы передачи смысла кода.
    Только теперь тебе придется выбрать одно из двух. Или всю терминологию этого кода переписать на грамматически чистый английский язык, или разбираться со своей проблемой исключительно самостоятельно.
    Пока я вижу только одну проблему в твоем коде: он не соответствует стандарту, т.к. написан не в соответствии с базовым набором символов.
  • Исходный файл не находит соответствующую функцию, как исправить?

    @MarkusD Куратор тега C++
    zenz , так а ошибки тебе какие транслятор пишет?
  • О безопасности Сбербанк Онлайн - неизменный пароль?

    Drno, смена симки приведет к временной блокировке онлайн банка.
    Когда у тебя крадут карту, тебе достаточно обратиться в банк (как можно скорее) и заблокировать карту + функции онлайн банка. Отделений сбера везде как грязи, буквально в пешей доступности отовсюду.
    Мобильник должен быть зашифрован и защищен биометрией или пином. Иначе онлайн банк держать стоит только на том устройстве, которое никогда не пересечется с картой в физическом мире.
    Онлайн банк сбера защищается пином, смена которого приводит к временной блокировке функций. За это время ты успеешь 10 раз добежать до отделения и заблокировать все что только можно.
    Из разряда паранойи: сделать нечитаемым CVC карты, предварительно сохранив его в защищенном месте и не писать PIN карты на ней же.