Задание, связанное с построением графиков.
1. Создайте пустое окно 600×600 с меткой “Графики функций”.
2. Создайте проект, свойства которого заданы в руководстве по инсталляции библиотеки FLTK
3. Поместите файлы Graph.cpp
Window.cpp
в ваш проект.4. Добавьте оси
5. Сделайте обе оси красными.
В дальнейшем используйте отдельный объект класса Shape
1. Постройте график функции double one(double x) { return 1; }
2. Измените рисунок, применив масштабирование по оси
3. В дальнейшем используйте этот диапазон и коэффициенты масштабирования при построении всех графиков.
4. Добавьте в окно график функции double slope(double x) { return x/2; }
5. Пометьте наклонную линию с помощью объекта класса Text
x/2
" в точке, расположенной прямо над левым нижним углом окна. 6. Добавьте в окно график функции double square(double x) { return x*x; }
7. Добавьте в окно график косинуса (не пишите новую функцию).
8. Сделайте график косинуса синим.
9. Напишите функцию sloping_cos()
slope()
(как определено выше) и постройте ее график в окне.Задание, связанное с определением класса.
1. Определите класс struct Person
string
и член age
типа int
.2. Определите переменную класса Person
cout
).3. Определите оператор ввода (>>
<<
) для класса Person
; считайте объект класса Person
с клавиатуры (cin
) и выведите его на экран (cout
).4. Напишите конструктор класса Person
name
и age
.5. Сделайте представление класса Person
name()
и age()
, предназначенные для чтения имени и возраста.6. Модифицируйте операторы >>
<<
для заново определенного класса Person.7. Модифицируйте конструктор, чтобы определить, что переменная age
name
не содержит символы ; : " ' [ ] * & ^ % $ # @ !
. В случае ошибки используйте функцию error()
. Протестируйте программу.8. Считайте последовательность объектов класса Person
cin
) в вектор типа vector
; выведите его на экран (cout
). Проверьте правильность ввода.9. Измените представление класса Person
first_name
и second_name
. Отсутствие хотя бы одного из этих членов должно считаться ошибкой. Исправьте операторы >>
и <<
. Протестируйте программу. Контрольные вопросы
1. Что такое функция одного аргумента?
2. Когда для представления данных используется непрерывная линия, а когда дискретные точки?
3. Какая функция определяет наклон? Напишите ее математическую формулу.
4. Что такое парабола?
5. Как создать ось
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
. Посмотрите, как это работает. Функция, вызывающая сама себя, называется while
). Убедитесь, что рекурсивная функция fac()
работает и выдает те же результаты, что и итеративная функция fac()
при вычислении факториала чисел 0, 1, 2, 3, 4 и так далее до 20. Какую реализацию функции fac()
вы предпочитаете и почему?