Website Summary Files Commits Branches @commit @diff @stats
path: root / Classes / Distance / Distance.cpp
diff options
context:
space:
mode:
Commit4a38a9bcfb8931774c758a0525fe642b9c6fb8e6 (patch)
Author
 Angeld55 <achi_d@abv.bg>
2019-09-18 21:18:42 +0300
Committer
 GitHub <noreply@github.com>
2019-09-18 21:18:42 +0300
Files2974c879fd77ae6f8298b00848d63476cb42745a /Classes/Distance/Distance.cpp
Object-oriented_programming_FMI-4a38a9bcfb8931774c758a0525fe642b9c6fb8e6.tar
Object-oriented_programming_FMI-4a38a9bcfb8931774c758a0525fe642b9c6fb8e6.tar.gz
Object-oriented_programming_FMI-4a38a9bcfb8931774c758a0525fe642b9c6fb8e6.zip
Parent115aa8b066e3fd9074cf6c3a1563955ffcea65c9 (diff)
Rename classes/Distance/Distance.cpp to Classes/Distance/Distance.cpp
1 files changed, 105 insertions, 0 deletions
-rw-r--r--Classes/Distance/Distance.cpp105
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;
+}