Чтение онлайн

на главную

Жанры

Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:

win.attach(adults_label);

win.attach(aged_label);

win.attach(x);

win.attach(y);

win.attach(current_year);

gui_main;

Весь код можно поместить в функцию

main
, хотя мы предпочитаем использовать вспомогательные классы
Scale
и
Distribution
, а также оператор ввода, определенный в классе
Distribution
.

Если

вы забыли, что мы делаем, посмотрите на рисунок.

Задание

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

1. Создайте пустое окно 600x600 с меткой “Графики функций”.

2. Создайте проект, свойства которого заданы в руководстве по инсталляции библиотеки

FLTK
.

3. Поместите файлы

Graph.cpp
и
Window.cpp
в ваш проект.

4. Добавьте оси x и y длиной по 400 пикселей каждая, с метками “1 == 20 пикселей” и делениями длиной по 20 пикселей. Оси должны пересекаться в точке (300,300).

5. Сделайте обе оси красными.

В дальнейшем используйте отдельный объект класса

Shape
для построения каждой из перечисленных ниже функций.

1. Постройте график функции

double one(double x) { return 1; }
в диапазоне [–10,11] с началом координат (0,0) в точке (300,300), используя 400 точек и не делая масштабирования (в окне).

2. Измените рисунок, применив масштабирование по оси x с коэффициентом 20 и по оси y с коэффициентом 20.

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
, содержащий член 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. Рассмотрим еще один способ определения функции, вычисляющей факториал.

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

Бастард Императора

Орлов Андрей Юрьевич
1. Бастард Императора
Фантастика:
фэнтези
аниме
5.00
рейтинг книги
Бастард Императора

На границе империй. Том 10. Часть 1

INDIGO
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 1

Имя нам Легион. Том 7

Дорничев Дмитрий
7. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Имя нам Легион. Том 7

Измена. Вторая жена мужа

Караева Алсу
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Измена. Вторая жена мужа

Буря империи

Сай Ярослав
6. Медорфенов
Фантастика:
аниме
фэнтези
фантастика: прочее
эпическая фантастика
5.00
рейтинг книги
Буря империи

Пенсия для морского дьявола

Чиркунов Игорь
1. Первый в касте бездны
Фантастика:
попаданцы
5.29
рейтинг книги
Пенсия для морского дьявола

На изломе чувств

Юнина Наталья
Любовные романы:
современные любовные романы
6.83
рейтинг книги
На изломе чувств

Тринадцатый II

NikL
2. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый II

Сирота

Шмаков Алексей Семенович
1. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
5.00
рейтинг книги
Сирота

Законы Рода. Том 9

Flow Ascold
9. Граф Берестьев
Фантастика:
городское фэнтези
попаданцы
аниме
дорама
фэнтези
фантастика: прочее
5.00
рейтинг книги
Законы Рода. Том 9

Красноармеец

Поселягин Владимир Геннадьевич
1. Красноармеец
Фантастика:
боевая фантастика
попаданцы
4.60
рейтинг книги
Красноармеец

Огненный князь 4

Машуков Тимур
4. Багряный восход
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Огненный князь 4

Начальник милиции. Книга 5

Дамиров Рафаэль
5. Начальник милиции
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Начальник милиции. Книга 5

Инкарнатор

Прокофьев Роман Юрьевич
1. Стеллар
Фантастика:
боевая фантастика
рпг
7.30
рейтинг книги
Инкарнатор