LoveRead.info » Книги » Разная литература » Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп

Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп

Книгу Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп читаем онлайн бесплатно полную версию! Чтобы начать читать не надо регистрации. Напомним, что читать онлайн вы можете не только на компьютере, но и на андроид (Android), iPhone и iPad. Приятного чтения!

290 0 18:03, 26-08-2023
Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп
26 август 2023

Книга Программирование. Принципы и практика использования C++ Исправленное издание - Бьёрн Страуструп читать онлайн бесплатно без регистрации

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

    1 ... 115 116 117 118 119 120 121 122 123 ... 337
    Перейти на страницу:
    class="code">                      // шестнадцатеричное число)

    cin.unsetf(ios::oct); // не считать восьмеричным

                          // (т.е. 12 может означать двенадцать)

    cin.unsetf(ios::hex); // не считать шестнадцатеричным

                          // (т.е. 12 может означать двенадцать)

    Функция-член потока unsetf() сбрасывает флаг (или флаги), указанный как аргумент. Итак, если вы напишете

    cin >>a >> b >> c >> d;

    и введете

    1234 0x4d2 02322 02322

    то получите

    1234 1234 1234 1234 

    11.2.3. Вывод чисел с плавающей точкой

     Если вы непосредственно работаете с аппаратным обеспечением, то вам нужны шестнадцатеричные числа (и, возможно, восьмеричные). Аналогично, если вы проводите научные вычисления, то должны форматировать числа с плавающей точкой. Они обрабатываются манипуляторами потока iostream почти так же, как и целые числа. Рассмотрим пример.

    cout << 1234.56789 << "tt(общий)n"  // tt — выравнивание столбцов

     << fixed << 1234.56789 << "t(фиксированный)n"

     << scientific << 1234.56789 << "t(научный)n";

    В итоге получим следующие строки:

    1234.57       (общий)

    1234.567890   (фиксированный)

    1.234568e+003 (научный)

    Манипуляторы fixed и scientific используются для выбора форматов для представления чисел с плавающей точкой. Интересно, что в стандартной библиотеке нет манипулятора general, который устанавливал бы формат, принятый по умолчанию. Однако мы можем определить его сами, как это сделано в заголовочном файле std_lib_facilities.h. Для этого не требуются знания о внутреннем устройстве библиотеки ввода-вывода.

    inline ios_base& general(ios_base& b) // фиксированный и научный

     // формат

     // сбрасывает все флаги формата с плавающей точкой

    {

      b.setf(ios_base::fmtflags(0), ios_base::floatfield);

      return b;

    }

    Теперь можем написать следующий код:

    cout << 1234.56789 << 't'

         << fixed << 1234.56789 << 't'

         << scientific << 1234.56789 << 'n';

    cout << 1234.56789 << 'n';           // действует формат

                                          // с плавающей точкой

    cout << general << 1234.56789 << 't' // предупреждение:

         << fixed << 1234.56789 << 't'   // general — нестандартный

                                          // манипулятор

         << scientific << 1234.56789 << 'n';

    В итоге получим следующие числа:

    1234.57 1234.567890 1.234568e+003

    1.234568e+003   // манипулятор научного формата является

                    // персистентным

    1234.57 1234.567890 1.234568e+003

    Итак, существует несколько манипуляторов для работы с числами с плавающей точкой.

    11.2.4. Точность

    По умолчанию число с плавающей точкой выводится на печать с помощью шести цифр в формате general. Формат, состоящий из шести цифр (точность формата general по умолчанию), считается наиболее подходящим, а такое округление числа — наилучшим. Рассмотрим пример.

    1234.567 выводится на печать как 1234.57

    1.2345678 выводится на печать как 1.23457

    Округление, как правило, выполняется по правилу 4/5: от 0 до 4 — округление вниз, а от 5 до 9 — вверх. Обратите внимание на то, что такое форматирование относится только к числам с плавающей точкой.

    1234567 выводится на печать как 1234567 (поскольку число целое)

    1234567.0 выводится на печать как 1.23457e+006

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

    ПОПРОБУЙТЕ

    Напишите программу, три раза выводящую на печать число 1234567.89, сначала в формате general, затем — в fixed, потом — в scientific. Какая форма вывода обеспечивает наиболее точное представление числа и почему?

    Программист может установить точность представления числа, используя манипулятор setprecision(). Рассмотрим пример.

    cout << 1234.56789 << 't'

         << fixed << 1234.56789 << 't'

         << scientific << 1234.56789 << 'n';

    cout << general << setprecision(5)

         << 1234.56789 << 't'

         << fixed << 1234.56789 << 't'

         << scientific << 1234.56789 << 'n';

    cout << general << setprecision(8)

         << 1234.56789 << 't'

         << fixed << 1234.56789 << 't'

         << scientific << 1234.56789 << 'n';

    Этот код выводит на печать следующие числа (обратите внимание на округление):

    1234.57 1234.567890 1.234568e+003

    1234.6 1234.56789 1.23457e+003

    1234.5679 1234.56789000 1.23456789e+003

    Точность определятся по правилам, приведенным ниже.

    Мы рекомендуем использовать формат, принятый по умолчанию (формат general с точностью, равной шести цифрам), если у вас нет весомых причин для применения другого формата. Обычно причина, по которой выбираются другие форматы, такова: “Мы хотим получить большую точность при выводе”. 

    11.2.5. Поля

    С помощью научного и фиксированного формата программист может точно контролировать, сколько места займет число на выходе. Это очень полезно при распечатке таблиц и т.п. Эквивалентный механизм для целых чисел называют полями (fields). Вы можете точно указать ширину поля, используя манипулятор setw(). Рассмотрим пример.

    cout << 123456           // поля не используются

         <<'|'<< setw(4) << 123456 << '|' // число 123456

                             // не помещается в поле

         << setw(8) << 123456 << '|' // из 4 символов,

                             // расширим до 8

         << 123456 << "|n"; // размеры полей не инертны

    В итоге получим следующий результат:

    123456|123456| 123456|123456|

     

     Обратите внимание на два пробела перед третьим появлением числа 123456. Это является результатом того, что мы выводим шесть цифр в поле, состоящее из восьми символов. Однако число 123456 невозможно усечь так, чтобы оно помещалось в поле, состоящем из четырех символов. Почему? Конечно, числа |1234| или |3456| можно интерпретировать как вполне допустимые для поля, состоящего из четырех символов. Однако в этом случае на печать будут выведены числа, которые совершенно не соответствуют ожиданиям программиста, причем он не получит об этом никакого предупреждения. Поток ostream не сделает этого; вместо этого он аннулирует неправильный формат вывода. Плохое форматирование почти всегда лучше, чем “плохие результаты”.
    1 ... 115 116 117 118 119 120 121 122 123 ... 337
    Перейти на страницу:
    1. Жалоба
    Отзывы - 0

    Прочитали книгу? Предлагаем вам поделится своим отзывом от прочитанного(прослушанного)! Ваш отзыв будет полезен читателям, которые еще только собираются познакомиться с произведением.


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

    • 1. Просьба отказаться от дискриминационных высказываний. Мы защищаем право наших читателей свободно выражать свою точку зрения. Вместе с тем мы не терпим агрессии. На сайте запрещено оставлять комментарий, который содержит унизительные высказывания или призывы к насилию по отношению к отдельным лицам или группам людей на основании их расы, этнического происхождения, вероисповедания, недееспособности, пола, возраста, статуса ветерана, касты или сексуальной ориентации.
    • 2. Просьба отказаться от оскорблений, угроз и запугиваний.
    • 3. Просьба отказаться от нецензурной лексики.
    • 4. Просьба вести себя максимально корректно как по отношению к авторам, так и по отношению к другим читателям и их комментариям.

    Надеемся на Ваше понимание и благоразумие. С уважением, администратор LoveRead.info.


    Установить VPN и читай слушай бесплатно

    Новые отзывы

    1. Людмила Хофман Людмила Хофман10 июнь 22:13 У меня перевернулся мир после прочтения ваших книг! Так приятно и чисто на душе, ведь по сути неважно кто с кем , а только любовь... Долгая игра - Рейчел Рид
    2. Анна Анна08 июнь 11:28 Спасибо за новую историю жизни и любви на сайте,прочитала с удовольствием .... Давай поженимся - Юлия Резник
    3. Елена Елена08 июнь 11:13 Прочла несколько романов этого, без сомнения, талантливого автора. Впечатление прекрасное, но хотелось бы когда-нибудь прочесть... Предатель. Ты врал мне годами - Арина Арская
    Все комметарии
    Новинки бесплатной онлайн библиотеки