Главная » Просмотр файлов » Бьерн Страуструп. Язык программирования С++. Специальное издание (2011)

Бьерн Страуструп. Язык программирования С++. Специальное издание (2011) (1004033), страница 163

Файл №1004033 Бьерн Страуструп. Язык программирования С++. Специальное издание (2011) (Бьерн Страуструп. Язык программирования С++. Специальное издание (2011)) 163 страницаБьерн Страуструп. Язык программирования С++. Специальное издание (2011) (1004033) страница 1632018-10-07СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 163)

(*2) Читайте строки текста в символьный буфер фиксированного размера. Удалите все пробельные символы и замените все алфавитные символы на следующие за ними в алфавите (г на а, 9 на о). Выведите получившуюся строку. 772 Глава 21. Потоки 8. ('3) Напишите миниатюрную систему потокового ввода/вывода, предостав ляюшую классы !з)гсат, охггсат, (1вггсат, о1хггсат, функции орегагог«() и орсгагог» () для целых чисел и такие операции, как орел () и с1озс(), для файлов.

9. (*4) Реализуйте стандартную библиотеку ввода/вывода языка С (<т11о. Ь>) при помощи стандартной библиотеки ввода/вывода языка С++ (<!оигсат>). 10. (*4) Реализуйте стандартную библиотеку ввода/вывода языка С++ (<1озггеат>) при помощи стандартной библиотеки ввода/вывода языка С (<зпйо.й>). 11. (*4) Реализуйте зти библиотеки так, чтобы их можно было использовать одновременно. 12. (*2) Реализуйте класс с перегруженной операцией (], предназначенной для чтения файлов по'заданной в нем позиции. 13. (*3) Повторите предыдущее упражнение, но сделайте операцию (] пригод- ной как для чтения, так и для записи.

Намек: сделайте так, чтобы операция (] возвращала дескриптор, для которого присваивание означало бы запись в файл, а неявное преобразование к сйаг — чтение из файла. 14. ('2) Повторите предыдущее упражнение, но сделайте операцию (] пригодной для объектов разных типов, а не только для символов типа с1тг. 15. (*3.5) Реализуйте версии Вггсат и озггеат, которые читают и записывают числа в бинарном формате, а не переводят их в символы. Обсудите достоинства и недостатки такого подхода по сравнению со стандартным (символьным) подходом.

16. ('3.5) Разработайте и реализуйте операцию ввода по шаблону. Используйте форматирующие строки в стиле функции рг1л0'() для задания шаблона ввода. Должна иметься возможность применения к одному и тому же вводу разных шаблонов для установления истинного формата. Можно реализовать квасе как производный от 1зггсат. 17. (*4) Придумайте и реализуйте наилучший вид шаблона для шаблонного ввода. Уточните, в чем именно состоит его преимущество. 18.

(*2) Определите манипулятор вывода Ьахс0, имеющий два аргумента — систе му счисления и целое значение, и выводящии целое число в соответствии с указанной системой счисления. Например, ЬазсИ(2,9) должно вывести 1001. 19. (*2) Напишите манипуляторы, которые включают и выключают эхо-повторы символов при их вводе. 20. (*2) Реализуйте Воилд 1огт из 92].4.6.3 для обычного набора встроенных типов. 21. ("2) Переопределите Воил0 /огт из 92!.4.6.3 так„чтобы операция вывода ни- когда не выходила за установленную ширину (вЫгл () . Нужно также гарантировать, что выводимое значение не будет незаметным образом усечено по точности.

21.10. Упражнения (*3) Реализуйте манипулятор елсгург()г), который шифрует вывод в поток овггеазл с ключом й. Реализуйте также противоположный по смыслу манипу- лятор в(есгурт(1 для чтения из потока (вггеат. Предоставьте средство отклю- чения шифрования, чтобы последующий вывод шел открытым текстом. (*2) Проследите путь символа в вашей системе от клавиатуры до экрана на примере следующего кода: 22. 23. сдаг с; сзл» с; соиз«с «елй; (*2) модифицируйте геайлгв11 (э21.3.6) так, чтобы обрабатывались все ис- ключения. Подсказка: «выделение ресурса есть инициализация», (*2.5) Существуют стандартные способы чтения, записи и представления дат под управлением класса!оса!е.

Прочитайте о них в документации к вашей реализации и напишите небольшую программу чтения и записи дат при по- мощи этого механизма. Подсказка: ввгисг пл. (*2.5) Определите поток вывода с именем овггвзгеат, который можно было бы прикреплять к массиву символов (С-строке) таким же способом, каким овЖляпгеат прикрепляется к строкам типа вгггля. Однако не,копируйте мас- сив в или из овггвггеат. Поток овггзггеат должен просто обеспечить возмож- ность записи в прикрепленный к нему массив символов. Его можно было бы использовать для форматирования в памяти следующим образом: 25. 26. сйаг Ьиу1тевваде и2е); овзгвггеат овг(ьи/, тевваде вгсе); чго зотесй(ля 1агдителзв, ов11; соиг « Ьигч У вывод в буфер Ьи~ через озг Ь' озг о«)йз добавляет термииояьяый 0 ("2.5) Реализуйте манипулятор делега!1), который возвращает поток в его оригинальное состояние форматирования так, как вс)елгзЯс11 (З2!.4.6.2) за- ставляет поток использовать научный формат.

Операция вроде в(о вотегйзлд() может писать в поток ом, передавать поток ом другим операциям и т.д., используя стандартные операции вывода. Нет необходимости контролировать переполнение, ибо овг знает свои размеры и переходит в состояние уа«2() при его заполнении.

Операция йвр!ау11 может писать сообщения в «настоящий» поток вывода. Такой прием особо удобен, когда конечная операция должна осуществлять вывод на устройство, отличное от традиционных строкоориентированных устройств вывода. Например, может понадобиться помещать текст из от в область экрана с фиксированными размерами. В конце аналогичным образом определите и потоковый класс Ыгвггеат, который читает строки из символьного массива с терминальным нулем.

Интерпретируйте терминальный нуль как символ епг)-оГ-Ше («конец файла»). Такие строковые потоки входили в ранние варианты библиотеки потоков и их обычно можно найти в <взгвггеат. Ь>. Классы для математических вычислений Цель вычислений — понимание, а не числа. — Р.В. Хзмминг ..но для студента числа — наилучший путь к пониманию. — А. Ролстон Введение — предельные значения — стандартные математические функции— класс га1аггау — векторные операции — срезы — массив в11се апау — устранение временных объектов — «в11се аггау — таей аггау — 1пи1гест аггау — комплексная арифметика — обобщенные численные алгоритмы — случайные числа — советы — упражнения. 22.1. Введение Трудно написать какой-либо реальный код, не содержащий изрядную долю вычислений. Но чаше всего серьезных математических вычислений не требуется.

Настоящая глава рассматривает те средства стандартной библиотеки, которые идут много дальше простейшей арифметики. Ни язык С, ни С++ не разрабатывались намеренно с целью поддержки выполнения разветвленных математических расчетов. Однако серьезные математические расчеты все равно так или иначе возникают в контексте самых разных прикладных задач — доступ к базам данных, работа с сетями, управление внешними устройствами, графика, моделирование, финансовый анализ и т.д.

В итоге, на С++ приходится выполнять немалый объем математических вычислений, составляющих определенную часть более крупных проектов. В настоящее время характерные математические вычисления выходят далеко за рамки простых циклических расчетов с наборами чисел с плавающей запятой. Но там, где встречаются более сложные структуры данных, мощь языка С++ становится очевидной, и поэтому научные и инженерные расчеты 776 Глава 22. Классы для математических вычислений все чаще стали выполняться с применением языка С++. В настоящей главе рассматриваются те части стандартной библиотеки С++, которые предназначены для поддержки математических вычислений.

Рассматривается ряд приемов, характерных для программ, в которых математические расчеты формулируются на языке С++. Однако я не пытаюсь учить здесь математике или численным методам, которые сами по себе являются захватывающей темой. Чтобы вникнуть в зту тему, вам потребуется хороший курс по численным методам или, по крайней мере, учебник по этому предмету, а не руководство по языку программирования. 22.2. Числовые пределы Чтобы уверенно работать с числами, нужно хорошо знать общие свойства встроенных числовых типов, а они зависят больше от реализации, чем от правил языка программирования (54.6). Например, каково наибольшее значение для типа 1пт? Каково наименьшее значение для!?оат? Преобразование от т1оиЫе ку)оаг вызывает усечение или округление? Сколько бит в сйае? Ответы на подобного рода вопросы дают специализации шаблона питепс !1т!1в, представленного в заголовочном файле <1!т(гв>.

Например: чои(у (доиЫе ч(, !и! !) ( И" (антее!с 11т11в<ипв18пед сбое>:: Й811в ! = 8) б необычные байты (число бит не равно 8) (!'(1<питепс 11т11в<вбоег>:: т!п () (( питепс 11тГгв<вбоег>:: тих () <1) ( 0 1 не может храниться в лБог! без потери точности т)" (0<8 ьь т!<питеек !(т(гв<доиЫе>::ерлпоп () ) 8=0; (Г(питепс 11т11в<диад>:: (в врес!а(вед) ( 0 доступно информация о числовых пределах для типа ДиаН ) Каждая специализация предоставляет стержневую информацию по типу ее аргумента, так что на долю общего шаблона питее!с 11т11я остаются определения констант и простых встраиваемых функций: !етр(осе<с(авв Т> с!авв питепс Ит(ув ( риЫ1с: в1а(к сонм Ьоо! 1в врес(а!!сед = Га1ве; ?? есть информация для питепс !(т(гв<?>? ?? неинтересные умолчотельные установки ): Реальная информация сосредоточена в специализациях шаблона. Каждая реализация обязана предоставить по специализации этого шаблона для каждого фунда- 22.2.

Числовые пределы (етр1а1е<> с!азз питейс Ит(ел<сваг> ( риЫ!с: з(айс сопи( Ьоо! 1( зрес!а!(хей = и ив; УУ да, информация есть УУ число бит (исключая знак) тайс сола ш( 4181(з = 7( УУ в данной реализации сйаг знаковый УУ сааг - зто интегральный тип з(айс сопяа Ьоо! (з гйяпей = 1гие( з(айс сопя( Ьоо1 (з ш(еВег = иле( заайс сваг тш() глгою() (гетгл -128; ) УУнаименыиее значение з(айс слог тах() (Ьго(е() (ге1игп 127; ) УУ наибольшее значение УУмасса объявлений, не имеющих отношение к саог )( Заметьте, что для целого знакового типа й181гз на единицу меньше, чем число бит в этом типе. Большинство членов лии(еЫс 11ш1(з предназначены для описания чисел с плавающей запятой.

Характеристики

Тип файла
DJVU-файл
Размер
8,84 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6472
Авторов
на СтудИзбе
304
Средний доход
с одного платного файла
Обучение Подробнее