Задать вопрос
  • Как вывести double число c определенным числом знаков ДО ЗАПЯТОЙ и После в сумме?

    AshBlade
    @AshBlade Куратор тега C#
    Просто хочу быть счастливым
    Тут нужен Math.Round, но зависит от того какое округление нужно
    var value1 = 13.444;
    var value2 = 13.446;
    // С параметром MidpointRounding.ToNegativeInfinity - без мат. округления, просто отбрасываются
    Console.WriteLine(Math.Round(value1, 2, MidpointRounding.ToNegativeInfinity));   // 13.44
    Console.WriteLine(Math.Round(value2, 2, MidpointRounding.ToNegativeInfinity));   // 13.44
    // Если нужно мат. округление
    Console.WriteLine(Math.Round(value1, 2));  // 13.44
    Console.WriteLine(Math.Round(value2, 2));  // 13.45

    Поиграйся с MidpointRounding параметром
    Ответ написан
    Комментировать
  • Как нормализовать массив значений в цветовое представление?

    Griboks
    @Griboks Куратор тега C#
    Тут идея в наглядном отображении какой-нибудь величины. Но если вы хотите тупо вывести чёрно-белое изображение, тогда
    (x-min)*255/(max-min)
    Ответ написан
    Комментировать
  • Что не даёт на C++ писать кроссплатформенные приложения?

    saboteur_kiev
    @saboteur_kiev Куратор тега C++
    software engineer
    Любая программа, написанная под конкретную платформу - работает гарантированно на этой платформе.

    java считается кроссплатформенной, потому что вы пишете не под линукс и не под виндовс и не под андроид, а под java, а уже те, кто писали саму java машину, берут на себя то, что сперва на windows/linux/android будет установлена соответствующей версии java, в которой будет крутиться ваша программа.
    При этом все равно разница существует, поэтому нужно ее учитывать при разработке.

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

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Да, как бы, ничего не мешает писать один С++ код для множества платформ. Почти весь мой трудовой стаж связан именно с разработкой кроссплатформенных игр. Я работал с несколькими (самодельными и не очень) движками и имею свое собственное детище, прекрасно и однозначно собирающееся на 5 целевых платформ (Win, Mac, Linux, ios, Android), к которым без труда можно добавить и консоли, и новые платформы.

    Нет, вру, не без труда. Попотеть над слоем абстракции придется. Но попотеть придется только над ним, все остальное заведется само, т.к. изначально написано в стандарте C++, без расширений под конкретные компиляторы, и с применением ряда очень важных для кроссплатформенности подходов.

    Кроссплатформенность подразумевает решение ряда вопросов, которые и выливаются в слой абстракции над операционной системой. Эти вопросы, зачастую, решать никто не хочет. Несколько раз встречал такое сам и еще мне рассказывали о том, как тот или иной движок сперва был только под конкретную ###, а потом решили портировать на @@@. Оказалось, что компилятор, которым всегда и собирали движок, нашпигован расширениями языка, которые конечно же все пользовали на 100%, и при смене компилятора ни один файл исходников не остался без доброй сотни ошибок. Т.е. переписывать надо было ВСЁ.

    Mercury13 хорошо рассказал про Unicode пути к файлам. Drakonoved правильно подметил про разделители путей к файлам. Максим Гришин очень хорошо напомнил про порядок следования байт. Это все и есть часть этого ряда вопросов.
    У каждой платформы есть свой API, которого не будет на другой платформе. Но на другой платформе будет свой API, со своими именами и схожей функциональностью. И работу с API надо абстрагировать от универсального кода.
    Еще, на одной платформе у тебя может быть разомкнутый главный цикл обработки сообщений (Win), а на другой - замкнутый (Android). Надо подстраиваться. GUI везде разный, надо подстраиваться. Сама структура приложения на одной платформе может быть монолитной, а на другой - композиционной. Графические и звуковые API могут быть и кроссплатформенными, однако простоты использования это им не прибавляет. Инициализация все равно будет платформозависимой.
    На самом деле даже в рамках работы на одной платформе надо соблюдать ряд правил, чтобы иметь возможность из одного кода получать и 32-битное приложение, и 64-битное тоже. Об этом неплохо написано на сайте разработчиков PVS-Studio.

    И все это решается. От части - с помощью архитектурных приемов. Один из таких я уже показывал в другом своем ответе.
    И еще эти вопросы можно не решать.
    ДубльГИС, например, уже давно работает на базе Qt, что сильно упростило им кроссплатформенную жизнь. Qt решает ряд проблем кроссплатформенности.
    Ответ написан
    11 комментариев
  • Как подключить библиотеку с++(возникает ошибка хедер сломан)?

    maaGames
    @maaGames
    Погроммирую программы
    В дополнительные зависимости надо указывать lib файлы, а не хэдеры. Ты перепутал местами настройки. Хэдеры (путь до папки, а не сами файлы) надо задать в блоке где AdditionalIncludeDirectories. Соответсвтено в коде останется #include "BaseTerminal.h", если в настройках задаш путь "D:\Projects\TerminalHelper\TerminalHelper\"
    Ответ написан
    22 комментария