3 (972471), страница 2
Текст из файла (страница 2)
Создайте класс CameraSizer, который содержит один непубличный элемент D для хранения оптическойсилы (в диоптриях) объектива цифрового фотоаппарата и два публичных метода double ReadD() для чтенияэлемента D и double Distance(double). Последний метод на вход получает расстояние дофотографируемого предмета, а возвращает расстояние от объектива, на котором следует расположить CCDматрицу для получения резкого изображения этого предмета. Конструктор класса в качестве параметраполучает значение оптической силы D.
Значение по умолчанию соответствует фокусному расстоянию линзыF=35 мм.2. Напишите программу, которая (используя методы созданного класса):Создает два объекта: 1) с заданным пользователем значением оптической силы объектива фотоаппарата; 2) соптической силой по умолчанию.Запрашивает у пользователя значение расстояния до предмета в метрах. Если запрошенное расстояниеменьше двойного фокусного расстояния объектива, выдает сообщение об ошибке и запрашивает расстояниезаново.
В противном случае выдает на экран значение расстояния между объективом и CCD-матрицей вмиллиметрах.Упражнение С3_4*.1. Модифицируйте класс Vector из задания С3_1, добавив общедоступный метод, который к векторудобавляет другой вектор, сохраняя результат в первом векторе (тем самым изменяя его).2. Используя модифицированный класс Vector, напишите программу случайного блуждания на плоскости.Для этого создайте вектор, координаты которого будут координатами блуждающего объекта. За нулевыепримите координаты начального положения. На каждой итерации блуждающий объект делает шагпостоянного размера и случайного направления (равномерно распределенного в интервале 0 0 – 3600).Реализуйте это блуждание как сложение вектора блуждающего объекта со случайным вектором заданногоразмера.3. Выполните серию из N=30 экспериментов с шагом блуждания 1 м. В каждой серии определите числошагов, которое пришлось сделать, чтобы удалиться на 50 м от начального положения. Рассчитайте среднеечисло шагов и стандартное отклонение.6Примечание.
Для задания случайного направления вы можете использовать функции из стандартнойбиблиотеки: генератор случайный чисел rand(), «сеятель» генератора srand(time(0)) и функцию time(0) дляорганизации случайного «посева». Прототипы первых двух функций содержатся в заголовочном файле<cstdlib>, прототип функции time() в файле <ctime>.Упражнение С3_5.1. Модифицируйте класс Vector из задания С3_1, таким образом, чтобы перегруженный с двумяпараметрами конструктор класса создавал вектор, координаты которого равнялись суммамсоответствующих координат вектора, создаваемого конструктором по умолчанию, и значений передаваемыхпараметров.Примечание.
Используйте в перегруженном конструкторе с двумя параметрами вызов конструктора поумолчанию.2. Включите в конструктор без параметров класса Vector вывод на экран строку «Объект создан \n», а вдеструктор строку «Объект удален \n». Создайте и инициализируйте массив векторов вида Vector v[3] ={Vector (2., 2.), Vector (3., 3.)}; Используя метод show(), в цикле выведите на экран координаты всехвекторов вашего массива. Прокомментируйте полученные результаты работы программы.7.