Задать вопрос
  • Почему не работает часть программы?

    @MarkusD Куратор тега C++
    iamgrootyhuuu,
    d-день, m-месяц,g-год,S-следующий день

    А что тебе будет понятнее прочитать: d или day_number?
    Соответственно: m или month_number?
    И еще: S или next_day_number?
    Ты ссылаешься на задание, но ты не всегда будешь его помнить. В следующем году, когда ты уже все забудешь, ты откроешь этот код и точно так же, как и все остальные участники текущего обсуждения, не будешь видеть никакого смысла в этих однобуквенных названиях.
    Моим советом, который дальше только поможет тебе, будет: всегда выбирай осмысленные имена. Никогда не ссылайся на задания или что-то еще, передавай суть заданий прямо в тексте программы. Для этого всегда выбирай только осмысленные имена, которые отражают смысл существования в рамках твоей задачи.
    Пока у тебя получается вот такое. Там человек сперва пишет одно, а потом имеет в виду вообще другое. Твой код, точно так же, пока только вводит в заблуждение.
    Твоя стратегия мышления должна быть схожей вот с этим. Посмотри там сам вопрос, а потом цепочку комментариев от обозначенного и ниже.

    а switch получается показывает, какие переменные нужно проверять в условии, которое написано в case

    Тут нужно сходить в документацию оператора switch [?] и увидеть что проверка идет только для одного выражения. Я не просто так написал про int operator , ( int, int ), по умолчанию comma operator возвращает только свой правый аргумент.
    Код switch (d, m, g) эквивалентен switch (g).
    На самом деле другие люди тебе мало чем смогут помочь по изучению языка. Даже я вряд ли смогу тебе полноценно помочь. Тебе будет лучше обратиться к известным общедоступным источникам информации по языку. Сперва все будет очень непонятно, но ты просто читай, на начальных этапах всегда важно собирать информацию.
    Между тем, тебе всегда стоит помнить что люди будут только рады дать исчерпывающий ответ на твой конкретный вопрос. "Помочь с синтаксисом" - довольно широкий вопрос, на который довольно тяжело ответить. "Как правильно пользоваться конструкцией switch-case" - хороший, конкретный вопрос, на который любой квалифицированный специалист будет рад дать ответ.

    мне вроде удобно читать

    На самом деле неудобно даже тебе и даже сейчас. Пока у тебя не больше 20 строк кода, ты можешь позволить себе такое форматирование. Но посмотри на это. Там сложность зашкаливает. Без горизонтального блочного форматирования код был бы абсолютно нечитаемым. И, на самом деле, твой код является нечитаемым абсолютно для всех разработчиков потому что люди уже привыкли код видеть блоками. Тебе стоит просто попробовать и ты поймешь насколько это облегчает понимание.
    Подобные статьи помогут тебе с этим вопросом: [1], [2], [3], [4], [5].

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

    Задача у тебя довольно большая, на самом деле. Решать ее целиком - идея плохая. Твою задачу нужно поделить на этапы. Минимально тут выделяется три больших тапа: ввод данных, проверки и вычисления, вывод результата.
    Каждый из этих этапов тоже нужно разделить.
    На какие более мелкие этапы ты бы разделила каждый из этих больших этапов?
  • Почему не работает часть программы?

    @MarkusD Куратор тега C++
    iamgrootyhuuu, давай я задам несколько вопросов чтобы помочь тебе. Для тебя будет полезно ответить на них хотя бы самой себе. Но лучше, конечно, чтобы я мог прочитать твои ответы и у нас получился бы диалог.

    int d, m, g, S;
    Какой смысл в существовании каждой из этих переменных? Если у тебя не получается сформулировать смысл существования какой-то переменной, тебе нужно стереть эту переменную. Если у тебя получается сформулировать смысл существования переменной, то почему переменная названа настолько бессмысленно?

    switch (d, m, g)
    Тут два раза применен int operator , ( int, int ), какой у него эффект по умолчанию?

    Насколько тебе удобно читать свой код, когда все фигурные скобки и код всех областей видимости находится на одном уровне?
  • Почему не работает часть программы?

    @MarkusD Куратор тега C++
    pfemidi,
    Давно ли внутри switch можно делать if?

    Всегда можно было. Это стандартный синтаксис. case - это просто метка, на которую исполнение прыгает при соответствии условия. Локальность на все case едина - это локальность switch. Далее, после каждого case уже можно организовать свою локальность. Собственно, именно поэтому определение локальных переменных просто под case и сулит проблемами.
    Возможно это тебя шокировало, но таков синтаксис C++. :)
  • Прекращает ли свою работу функция(не void) после того как вернет значение?

    @MarkusD Куратор тега C++
    IliaNeverov, в таком случае оба ответа верны.
    Если был использован return, то к моменту получения результата функции весь ее код завершен. Если бы использован co_yield, то к моменту получения результата код функции приостановлен.
    Дело в том, что после выполнения строки с кодом return функция еще продолжает работать, вызывая деструкторы локальных объектов и выполняя некоторый сервисный код. Только после этого результат из строки с кодом return будет передан в вызвавший функцию код.
  • Почему некорректно находит произведение чисел?

    @MarkusD Куратор тега C++
    HoShik, твоя функция умеет домножать на половину числа? Что будет если первым аргументом будет передано число 1.5f?
    Ты в курсе что при передаче переменного количества аргументов, сами эти аргументы проходят нормализацию? Внутри mult() у тебя только один первый аргумент имеет тип float, все остальные - double.
  • Как исправить ошибку "Buffer is too small" C++?

    @MarkusD Куратор тега C++
    none7, тогда тебе нужно именно так в ответе и написать. Пока твой ответ вызывает только обозначенный мной вопрос. Обрати внимание на точность моего вопроса.
    Сейчас в своем ответе ты написал что strlen() вообще игнорирует терминальный символ в своей работе. Но функция его не учитывает только в своем результате, что и отражено в документации функции.

    Никаких общеизвестных фактов на этот счет не существует. Единственным твоим источником информации должна быть только документация.
  • Как исправить ошибку "Buffer is too small" C++?

    @MarkusD Куратор тега C++
    none7 , приведи, пожалуйста, ссылки на документацию, где сказано что стандартная функция strlen() при своей работе игнорирует терминальный символ.
  • Как исправить ошибку "Buffer is too small" C++?

    @MarkusD Куратор тега C++
    Данил Васькевич, не забывай ставить упоминания. Только так человек (я), которому ты отвечаешь, сможет узнать что ты ему ответил.
    Странно что в вопросе ты обрамил код соответствующим тегом, а в комментарии - нет. Будет лучше если ты отредактируешь свой комментарий и приведешь код в читабельный вид.

    По коду, пока только то, что я могу увидеть.
    size_t size = 80;
    string_ = new char[80]{""};

    Какой смысл в size если она не используется?
    Зачем в конструкторе по умолчанию выделять какую-то память, когда ты не знаешь как пользователь дальше будет распоряжаться объектом?

    String(const char* string) {
    delete[] string_;
    size_t size = strlen(string);
    strcpy_s(string_, size, string);
    }

    Этот код не работает. delete[] string_; в этом месте будет означать delete[] nullptr;, т.е. нонсенс. Оператор delete[] ничего не освободит. В это время, strcpy_s(string_, size, string); будет означать strcpy_s(nullptr, size, string);, что приведет к падению.

    String(const String &str) {
    size_t size = strlen(str.string_) + 1;
    strcpy_s(string_, size, str.string_);
    }

    Этот код тоже падает, тоже по тем же причинам.

    При этом, у тебя в коде нет функций resize() и reserve(), которые и должны управлять подконтрольным строке буфером памяти.
    Твой concat() должен быть примерно таким:
    String String::concat(const String& other) const
    {
      String result;
      
      result.reserve( length() + other.length() + 1 );
      result = *this;
      result += ' ';
      result += other;
      
      return result;
    }
  • Как исправить ошибку "Buffer is too small" C++?

    @MarkusD Куратор тега C++
    Данил Васькевич , покажи полностью все объявление типа String.
  • Прекращает ли свою работу функция(не void) после того как вернет значение?

    @MarkusD Куратор тега C++
    IliaNeverov, у тебя вопрос относительно выражения return или относительно места получения результата?
    Иными словами. Ты спрашиваешь, закончится ли выполнение кода функции сразу после строчки return или закончится ли выполнение кода функции сразу после получения возвращенного ей значения?
  • Как проверить переменную любого ссылочного типа на null?

    @MarkusD Куратор тега C++
    res2001 , ссылка на SO от 2010 года ведь. Тогда и GCC всяким баловался, и CL тоже отставал от стандарта.
    Сегодня разыменование нуля - это гарантированное UB для всех трансляторов.
  • Как сделать магазин в Unity?

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

    MadDog1337, теперь, видимо, вопрос надо по причине тег-спама удалять?
    Или ты просто прочитаешь правила и перестанешь их нарушать?
  • Segmentation fault c++?

    @MarkusD Куратор тега C++
    pfemidi, ключевое тут - это In C99. А стандарт C++ никогда не поддерживал C99.
  • Segmentation fault c++?

    @MarkusD Куратор тега C++
    danila_prokopenko ,
    как исправить?

    Отлаживать. Иначе исправить никак.
  • Python vs C. Какой из них быстрее?

    Василий Банников, По твоему тесту, на мой взгляд, у тебя все правильно. Все нормально и результаты тоже нормальные. Просто сами тесты завязаны на системные вызовы и тестируют только время системных вызовов. Поэтому при выводе в консоль разница во времени у тебя находится в пределах статистической погрешности. Это нормально.

    Когда вывод в консоль заглушен на /dev/null, системный вызов вывода в консоль просто шунтируется, поэтому время работы так кардинально упало. 59мсек против 381мсек выглядит более правдивым, но все равно показывает только время системных вызовов. Можно даже предположить, что на питоне такое время получается потому что в его недрах делается немного больше системных вызовов.

    Пробежка по 1млн значений на современном процессоре выполняется очень быстро как кодом питона, так и результатом трансляции кода C. Для C/C++ - это будет около одной миллисекунды. Любой системный вызов просто спрячет эту миллисекунду в своем времени.
  • Python vs C. Какой из них быстрее?

    Илхомжон Матазимов,
    хз, но факт

    Как? - это вопрос к тому, как именно ты замерял время. Или хз, но факт - это ответ "хз как замерял, но факт что замер был"? :)
  • Python vs C. Какой из них быстрее?

    Илхомжон Матазимов , тебе нужно показать как конкретно ты собирал код на C.
  • Кто знает хорошую литературу по разработке игрового движка?

    Тера Инкогнита, лови полный курс книг, тебе этого чтива очень надолго хватит. :)
    Если так с полтычка пустишься в разработку движка, то путного выйдет мало. Говорю по собственному опыту.
    Перед вниканием в разработку движка требуется сперва пройти этапы от второго и до пятого. Особого внимания требует раздел "Software development", в рамках которого идет обучение разработке архитектуры ПО. Без знания архитектуры ПО что-то сложное создать будет очень тяжело.