rayonnant14 / tp-lab-3

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Cpp-lab-3

Задачи для практикума №3 (классы)

Задача №1

Разработать класс Circle (круг), содержащий следующие поля:

  • radius - радиус
  • ference - длина окружности
  • area - площадь круга

Данные поля рекомендуется объявить как переменные типа double и с модификатором доступа private для безопасности. Доступ к этим полям следует ограничить с помощью методов класса.

В класс Circle включить конструктор, принимающий значение радиуса.

Класс должен обязательно содержать методы:

  • setRadius()
  • setFerence()
  • setArea()
  • getRadius()
  • getFerence()
  • getArea()

Замечание

  • при установке значения радиуса пересчитывать длину окружности и пощадь;
  • при установке длины окружности пересчитывать радиус и площадь;
  • при установке площади пересчитывать радиус и длину окружности.

При помощи класса Circle решить две вспомогательные задачи:

"Земля и верёвка"

Решить с использованием класса Circle следующую задачу:

Представим, что земля имеет форму идеального шара. Вокруг поверхности земного шара туго натянута верёвка (между ней и поверхностью нет никакого зазора). Кто-то разрезает верёвку в произвольном месте и добавляет кусок верёвки длиной 1 метр. После вставки между поверхностью земли и верёвкой возникает зазор, вызванный увеличением длины. Найти величину этого зазора. Примем за радиус земли расстояние в 6378.1 км

"Бассейн"

Решить с помощью класса Circle следующую задачу:

Необходимо рассчитать стоимость материалов для бетонной дорожки вокруг круглого бассейна, а также стоимость материалов ограды вокруг бассейна (вместе с дорожкой). Стоимость 1 квадратного метра бетонного покрытия 1000 р. Стоимость 1 погонного метра ограды 2000 р. Радиус бассейна 3 м. Ширина бетонной дорожки вокруг бассейна 1 м.

Задача №2

Разработать класс DateTime для работы с датой/временем.

В качестве основы взять функции и структуры для работы с временем из стандартной библиотеки (struct tm, time, localtime, mktime)

Добавить в класс DateTime следующие методы:

  • конструктор с тремя числовыми параметрами (день, месяц,год);
  • конструктор без параметров (объект использует текущую дату);
  • конструктор копирования (создаём копию другого объекта);
  • getToday() - возвращение текущей даты в виде строки, с указанием дня недели и названия месяца (например 07 november 2018, wedensday);
  • getYesterday() - возвращение даты вчерашнего дня в виде строки.
  • getTomorrow() - возвращение даты завтрашнего дня в виде строки.
  • getFuture(unsigned int N) - возвращение даты через N дней в будущем;
  • getPast(unsigned int N) - возвращение даты через N дней в прошлом;
  • getDifference(DateTime&) - для расчёта разницы (в днях) между двумя датами

Для работы со строками используется тип std::string

Функции (помещаются в task1.cpp):

  • double calcDelta() - расчет зазора между землей и веревкой
  • double calcCost() - расчет стоимости бассейна

Заголовки данных функций размещаются в заголовочном файле task1.h

Замечание

Точность расчетов - 2 знака после запятой.

Состав

  • Circle.h - описание класса Circle
  • Circle.cpp - реализация методов
  • DateTime.h - описание класса DateTime
  • DateTime.cpp - реализация методов
  • task1.h - прототипы функций расчета зазора и стоимости бассейна
  • task1.cpp - определение функций расчета зазора и стоимости бассейна
  • main1.cpp - решение задачи Земля и веревка
  • main2.cpp - решение задачи Бассейн
  • main3.cpp - демонстрация использования класса DateTime

Список участников/веток

ФИО Имя ветки
Альперович Вадим b1
Андрющенко Александр b2
Аросланкин Артем b3
Востряков Дмитрий b4
Горбачева Арина b5
Горшкова Екатерина b6
Доненко Денис b7
Исупова Мария b8
Кислицына Анастасия b9
Куклин Максим b10
Лесин Николай b11
Макридин Максим b12
Максимов Антон b13
Малинин Василий b14
Мартиросян Елизавета b15
Мурзаев Роман b16
Сазанов Дмитрий b17
Седунов Илья b18
Сиднева Анастасия b19
Ситникова Владислава b20
Слесарева Василина b21
Смольникова Полина b22
Тюлин Владислав b23
Филиппова Марина b24
Черноземова Дарья b25
Чернышев Константин b26
Черняев Ярослав b27

Алгоритм выполнения работы

Для выполнения работы необходимо:

  1. Выполнить fork репозитария в свой аккаунт.
  2. Выполнить клонирование репозитария из своего аккаунта к себе на локальную машину (git clone).
  3. Создать ветку git с индивидуальным номером (git branch имя_ветки).
  4. Сделать ветку активной (git checkout имя).
  5. Необходимо разместить как исходные файлы с решениями задач, поместив cpp файлы в src, а заголовочные - в include.
  6. Добавить файлы в хранилище (git add).
  7. Выполнить фиксацию изменений (git commit -m "комментарий").
  8. Отправить содержимое ветки в свой удаленный репозитарий (git push origin имя_ветки).
  9. Создать пул-запрос в репозитарий группы и ждать результата от Travis-CI.

About


Languages

Language:C++ 85.2%Language:Python 11.4%Language:CMake 1.0%Language:Shell 0.7%Language:Makefile 0.6%Language:M4 0.6%Language:C 0.4%