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

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

Шрифт:

8. Сделайте график косинуса синим.

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

sloping_cos
, суммирующую косинус, и функцию
slope
(как определено выше) и постройте ее график в окне.

Задание, связанное с определением класса.

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

struct Person
, содержащий член name типа
string
и член
age
типа
int
.

2. Определите переменную класса

Person
, инициализируйте ее значением “Goofy” и 63 и выведите на экран (
cout
).

3. Определите оператор ввода (

>>
) и вывода (
<<
) для класса
Person
; считайте объект класса
Person
с клавиатуры (
cin
) и выведите его на экран (
cout
).

4. Напишите конструктор класса

Person
, инициализирующий члены
name
и
age
.

5. Сделайте представление класса

Person
закрытым и включите в него константные функции-члены
name
и
age
, предназначенные для чтения имени и возраста.

6. Модифицируйте операторы

>>
и
<<
для заново определенного класса Person.

7. Модифицируйте конструктор, чтобы определить, что переменная

age
лежит в диапазоне [0:150], а переменная
name
не содержит символы
; : " ' [ ] * & ^ % $ # @ !
. В случае ошибки используйте функцию
error
. Протестируйте программу.

8. Считайте последовательность объектов класса

Person
с устройства ввода (
cin
) в вектор типа
vector<Person>
; выведите его на экран (
cout
). Проверьте правильность ввода.

9. Измените представление класса

Person
так, чтобы вместо члена name использовались члены
first_name
и
second_name
. Отсутствие хотя бы одного из этих членов должно считаться ошибкой. Исправьте операторы
>>
и
<<
. Протестируйте программу.

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

1. Что такое функция одного аргумента?

2. Когда для представления данных используется непрерывная линия, а когда дискретные точки?

3. Какая функция определяет наклон? Напишите ее математическую формулу.

4. Что такое парабола?

5. Как создать ось x? Как создать ось y?

6. Что такое аргумент, заданный по умолчанию, и зачем он нужен?

7. Как составить сложную функцию?

8. Как при построении графиков используются цвет и метки?

9. Что представляет собой приближение функции с помощью ряда?

10. Зачем разрабатывать эскиз графика перед разработкой кода для его построения?

11. Как масштабировать график?

12. Как масштабировать входные данные без многократных попыток и ошибок?

13. Зачем форматировать входные данные? Не лучше ли рассматривать файл, просто заполненный числами?

14. Как вы разрабатываете общий эскиз графика? Как этот эскиз отражается в вашей программе?

Термины

Упражнения

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

int fac(int n) { return n>1 ? n*fac(n–1) : 1; } // n!

Эта функция вычисляет значение

fac(4)
. Поскольку
4>1
, ответ равен
4*fac(3)
, т.е.
4*3*fac(2)
, т.е
4*3*2*fac(1)
, т.е.
4*3*2*1
. Посмотрите, как это работает. Функция, вызывающая сама себя, называется рекурсивной (recursive). Альтернативная реализация, описанная в разделе 15.5, называется итеративной (iterative), потому что в ней используется итерация по значениями (в цикле
while
). Убедитесь, что рекурсивная функция
fac
работает и выдает те же результаты, что и итеративная функция
fac
при вычислении факториала чисел 0, 1, 2, 3, 4 и так далее до 20. Какую реализацию функции
fac
вы предпочитаете и почему?

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

Fct
, который почти совпадает с классом
Function
, за исключением того, что он хранит аргументы конструктора. Включите в класс
Fct
операции “восстановления” параметров, чтобы мы могли повторять вычисления с разными диапазонами, функциями и т.д.

3. Модифицируйте класс

Fct
из предыдущего упражнения так, чтобы в нем был дополнительный аргумент, позволяющий контролировать точность. Сделайте тип этого аргумента шаблонным параметром, чтобы повысить гибкость класса.

  • Читать дальше
  • 1
  • ...
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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