Бьерн Страуструп. Язык программирования С++ Второе дополненное издание



Pdf көрінісі
бет201/256
Дата11.07.2022
өлшемі2,87 Mb.
#37591
1   ...   197   198   199   200   201   202   203   204   ...   256
10.7 Упражнения 
1. (*1.5) Читая файл вещественных чисел, составлять из пар прочитанных чисел комплексные числа, 
записать комплексные числа. 
2. (*1.5) Определить тип name_and_address (тип_и_адрес). Определить для него << и >>. Написать 
программу копирования объектов потока name_and_address. 
3. (*2) 
Разработать несколько функций для запроса и чтения данных разных типов. Предложения: 
целое, вещественное число, имя файла, почтовый адрес, дата, личная информация, и т.п. 
Попытайтесь сделать их устойчивыми к ошибкам. 


Бьерн Страуструп.
Язык программирования С++ 
 
282 
4. (*1.5) Напишите программу, которая печатает: (1) строчные буквы, (2) все буквы, (3) все буквы и 
цифры, (4) все символы, входящие в идентификатор в вашей версии С++, (5) все знаки пунктуации, 
(6) целые значения всех управляющих символов, (7) все обобщенные пробелы, (8) целые значения 
всех обобщенных пробелов, и, наконец, (9) все изображаемые символы. 
5. (*4) Реализуйте стандартную библиотеку ввода-вывода С () с помощью стандартной 
библиотеки ввода-вывода С++ (). 
6. (*4) 
Реализуйте стандартную библиотеку ввода-вывода С++ () с помощью стандартной 
библиотеки ввода-вывода С (). 
7. (*4) 
Реализуйте библиотеки С и С++ так, чтобы их можно было использовать одновременно. 
8. (*2) 
Реализуйте класс, для которого операция [] перегружена так, чтобы обеспечить произвольное 
чтение символов из файла. 
9. (*3) 
Повторите упражнение 8, но добейтесь, чтобы операция [] была применима для чтения и для 
записи. Подсказка: пусть [] возвращает объект "дескриптор типа", для которого присваивание 
означает: присвоить через дескриптор файлу, а неявное приведение к типу char означает чтение 
файла по дескриптору. 
10. (*2) Повторите упражнение 9, позволяя операции [] индексировать объекты произвольных типов, а 
не только символы. 
11. (*3.5) Продумайте и реализуйте операцию форматного ввода. Используйте для задания формата 
строку спецификаций как в printf(). Должна быть возможность попыток применения нескольких 
спецификаций для одного ввода, чтобы найти требуемый формат. Класс форматного ввода должен 
быть производным класса istream. 
12. (*4) Придумайте (и реализуйте) лучшие форматы ввода. 
13. (**2) Определите для вывода манипулятор based с двумя параметрами: система счисления и целое 
значение, и печатайте целое в представлении, определяемом системой счисления. Например, 
based(2,9) напечатает 1001. 
14. (**2) Напишите "миниатюрную" систему ввода-вывода, которая реализует классы istream, ostream, 
ifstream, ofstream и предоставляет функции, такие как operator<<() и operator>>() для целых, и 
операции, такие как open() и close() для файлов. Используйте исключительные ситуации, а не 
переменные состояния, для сообщения об ошибках. 
15. (**2) Напишите манипулятор, который включает и отключает эхо символа. 


Бьерн Страуструп.
Язык программирования С++ 
 
283 


Достарыңызбен бөлісу:
1   ...   197   198   199   200   201   202   203   204   ...   256




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет