From 4a38a9bcfb8931774c758a0525fe642b9c6fb8e6 Mon Sep 17 00:00:00 2001 From: Angeld55 Date: Wed, 18 Sep 2019 21:18:42 +0300 Subject: Rename classes/Distance/Distance.cpp to Classes/Distance/Distance.cpp --- Classes/Distance/Distance.cpp | 105 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 105 insertions(+) create mode 100644 Classes/Distance/Distance.cpp (limited to 'Classes/Distance/Distance.cpp') diff --git a/Classes/Distance/Distance.cpp b/Classes/Distance/Distance.cpp new file mode 100644 index 0000000..aea74a7 --- /dev/null +++ b/Classes/Distance/Distance.cpp @@ -0,0 +1,105 @@ +#include "Distance.h" + +Distance::Distance() +{ + setCm(minCM); + setM(minM); + setKm(minKm); + +} +Distance::Distance(int km, int m, int cm) +{ + setCm(cm); + setM(m); + setKm(km); +} +//constructs the distance by only given cm. +Distance::Distance(int cm) +{ + int km = cm / 100000; + int rest = cm % 100000; + int m = rest / 100; + rest = rest % 100; + + setKm(km); + setM(m); + setCm(rest); + + +} +void Distance::setCm(int cm) +{ + if (cm < minCM || cm > maxCM) + cm = minCM; + this->cm = cm; +} +void Distance::setM(int m) +{ + if (m < minM || m > maxM) + m = minM; + this->m = m; +} +void Distance::setKm(int km) +{ + if (km < minKm) + km = 0; + this->km = km; +} +int Distance::getCm()const +{ + return cm; +} +int Distance::getM() const +{ + return m; +} +int Distance::getKm() const +{ + return km; +} +void Distance::Print() const +{ + std::cout << "KM: " << km << " M: " << m << " CM: " << cm << std::endl; +} +int Compare(const Distance& d1, const Distance& d2) +{ + if (d1.getKm() < d2.getKm()) + return -1; + else if (d1.getKm() > d2.getKm()) + return 1; + else + { + if (d1.getM() < d2.getM()) + return -1; + else if (d1.getM() > d2.getM()) + return 1; + else + { + if (d1.getCm() < d2.getCm()) + return -1; + else if (d1.getCm() > d2.getCm()) + return 1; + else + return 0; + } + } +} +// if its between 66km and 99,5 km +bool Distance::isGreedy() const +{ + Distance lowLimit(66, 0, 0); + Distance upLimit(99, 500, 0); + return Compare(*this, lowLimit) > 0 && Compare(*this, upLimit) < 0; +} +int Distance::convertToCm() const +{ + return cm + m * 100 + km * 100000; +} +Distance getDiff(const Distance& d1, const Distance& d2) +{ + int cm1 = d1.convertToCm(); + int cm2 = d2.convertToCm(); + int diff = abs(cm1 - cm2); + Distance result(diff); + return result; +} -- cgit v1.3.1-23-gd82d