Вход/Регистрация
Программирование. Принципы и практика использования C++ Исправленное издание
вернуться

Страуструп Бьерн

Шрифт:

4. Откройте поток

ofstream
и выведите все точки в файл
mydata.txt
. В системе Windows для облегчения просмотра данных с помощью простого текстового редактора (например, WordPad) лучше использовать расширение файла
.txt
.

5. Закройте поток

ofstream
, а затем откройте поток
ifstream
для файла
mydata.txt
. Введите данные из файла
mydata.txt
и запишите их в новый вектор с именем
processed_points
.

6. Выведите на печать данные из обоих векторов.

7. Сравните эти два вектора и выведите на печать сообщение Что-то не так

!
, если количество элементов или значений элементов в векторах не совпадает.

Контрольные вопросы

1. Насколько разнообразными являются средства ввода и вывода у современных компьютеров?

2. Что делает поток

istream
?

3. Что делает поток

ostream
?

4. Что такое файл?

5. Что такое формат файла?

6. Назовите четыре разных типа устройств для ввода и вывода данных из программ.

7. Перечислите четыре этапа чтения файла.

8. Перечислите четыре этапа записи файлов.

9. Назовите и определите четыре состояния потоков.

10. Обсудите возможные способы решения следующих задач ввода.

10.1. Пользователь набрал значение, выходящее за пределы допустимого диапазона.

10.2. Данные исчерпаны (конец файла).

10.3. Пользователь набрал значение неправильного типа.

11. В чем ввод сложнее вывода?

12. В чем вывод сложнее ввода?

13. Почему мы (часто) хотим отделить ввод и вывод от вычислений?

14. Назовите две ситуации, в которых чаще всего используется функция

clear
класса
istream
.

15. Как определить операторы

<<
и
>>
для пользовательского типа
X
?

Термины

Упражнения

1. Напишите программу, вычисляющую сумму всех целых чисел, записанных в файле и разделенных пробелами.

2. Напишите программу, создающую файл из данных, записанных в виде объектов класса

Reading
, определенного в разделе 10.5. Заполните файл как минимум 50 показаниями температуры. Назовите эту программу
store_temps.cpp
, а файл —
raw_temps.txt
.

3. Напишите программу, считывающую данные из файла

raw_temps.txt
, созданного в упр. 2, в вектор, а затем вычислите среднее и медиану температур. Назовите программу
temp_stats.cpp
.

4. Модифицируйте программу store_temps.cpp из упр. 2, включив в нее суффикс c для шкалы Цельсия и суффикс

f
для шкалы Фаренгейта. Затем модифицируйте программу
temp_stats.cpp
, чтобы перед записью в вектор проверить каждое показание, преобразовать показание из шкалы Цельсия в шкалу Фаренгейта.

5. Напишите функцию

print_year
, упомянутую в разделе 10.11.2.

6. Определите класс

Roman_int
для хранения римских цифр (как чисел типа
int
) с операторами
<<
и
>>
. Включите в класс
Roman_int
функцию
as_int
, возвращающую значение типа
int
, так, чтобы, если объект
r
имеет тип
Roman_int
, мы могли написать
cout << "Roman" << r << " равен " << r.as_int << '\n';
.

7. Разработайте вариант калькулятора из главы 7, который работал бы не с арабскими, а с римскими цифрами, например

XXI+CIV==CXXV
.

8. Напишите программу, принимающую на вход имена двух файлов и создающую новый файл, содержащий первый файл, за которым следует второй; иначе говоря, программа должна конкатенировать два файла.

9. Напишите программу, принимающую на вход два файла, содержащие упорядоченные слова, разделенные пробелами, и объедините их, сохранив порядок.

10. Добавьте в калькулятор из главы 7 команду

from x
, осуществляющую ввод данных из файла
x
. Добавьте в калькулятор команду
to y
, выполняющую вывод (как обычных данных, так и сообщений об ошибках) в файл
y
. Напишите набор тестов, основанных на идеях из раздела 7.3, и примените его для проверки калькулятора. Объясните, как вы используете эти команды для тестирования.

11. Напишите программу, вычисляющую сумму целых чисел, хранящихся в текстовом файле и разделенных пробелами и словами. Например, после ввода строки “

bears: 17 elephants 9 end
” результат должен быть равен
26
.

  • Читать дальше
  • 1
  • ...
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: