Giter Site home page Giter Site logo

tp-lab-3's Introduction

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

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

ФИО Имя ветки

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

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

  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.

tp-lab-3's People

Contributors

ashtanyuk avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.