Time Sınıfı
Time sınıfı saat ve dakika olarak zaman bilgisini tutuyor. Time sınıfı türünden bir nesnenin değeri 5 saat 27 dakika gibi bir deger. Sınıf fonksiyon yüklemesine örnek olarak yazıldı.
8 saat 57 dakika + 1 saat 32 dakika = 10 saat 29 dakika
8 saat 57 dakika - 1 saat 32 dakika = 7 saat 25 dakika
8 saat 57 dakika * 3.4 = 29 saat 58 dakika
*******************************************************************************
9 saat 36 dakika + 6 saat 53 dakika = 16 saat 29 dakika
9 saat 36 dakika - 6 saat 53 dakika = 2 saat 43 dakika
9 saat 36 dakika * 3 = 28 saat 37 dakika
*******************************************************************************
7 saat 7 dakika + 4 saat 11 dakika = 11 saat 18 dakika
7 saat 7 dakika - 4 saat 11 dakika = 2 saat 56 dakika
7 saat 7 dakika * 5.2 = 36 saat 44 dakika
#include <iostream> #include <iomanip> class Time { private: size_t hours; size_t minutes; public: Time(); Time(size_t h, size_t m = 0); Time &add_min(size_t m); Time &add_hour(size_t h); Time &reset(size_t h = 0, size_t m = 0); Time &operator+=(const Time &r); Time &operator-=(const Time &r); Time &operator*=(double n); bool operator<(const Time &r)const; bool operator<=(const Time &r)const; bool operator>(const Time &r)const; bool operator>=(const Time &r)const; bool operator==(const Time &r)const; bool operator!=(const Time &r)const; friend std::ostream &operator<<(std::ostream &os, const Time &r); friend std::istream &operator>>(std::istream &os, Time &r); }; Time operator+(const Time &r1, const Time &r2); Time operator-(const Time &r1, const Time &r2); Time operator*(double, const Time &r2); Time operator-(const Time &r2, double); using namespace std; Time::Time():hours(0), minutes(0){} ////////////////////////////////////////////////// Time::Time(size_t h, size_t m) { if (m > 60) { h += m / 60; m %= 60; } hours = h; minutes = m; } ////////////////////////////////////////////////// Time &Time::add_min(size_t m) { minutes += m; hours += minutes / 60; minutes %= 60; return *this; } ////////////////////////////////////////////////// Time &Time::add_hour(size_t h) { hours += h; return *this; } ////////////////////////////////////////////////// Time &Time::reset(size_t h, size_t m) { hours = h; minutes = m; return *this; } ////////////////////////////////////////////////// bool Time::operator<(const Time &r)const { if (hours != r.hours) return hours < r.hours; return minutes < r.minutes; } ////////////////////////////////////////////////// bool Time::operator<=(const Time &r)const { return !(r > *this); } ////////////////////////////////////////////////// bool Time::operator>(const Time &r)const { return r < *this; } ////////////////////////////////////////////////// bool Time::operator>=(const Time &r)const { return !(r < *this); } ////////////////////////////////////////////////// bool Time::operator!=(const Time &r)const { return r < *this || *this < r; } ////////////////////////////////////////////////// bool Time::operator==(const Time &r)const { return !(*this != r); } ////////////////////////////////////////////////// ostream &operator<<(ostream &os, const Time &r) { if (r.hours) os << r.hours << " saat "; if (r.minutes) os << r.minutes << " dakika"; return os; } ////////////////////////////////////////////////// istream &operator>>(istream &is, Time &r) { size_t h, m; is >> h >> m; r = Time(h, m); return is; } ////////////////////////////////////////////////// Time &Time::operator+=(const Time & r) { minutes += r.minutes; hours += r.hours + minutes / 60; minutes %= 60; return *this; } ////////////////////////////////////////////////// Time &Time::operator-=(const Time &r) { int min_this = minutes + 60 * hours; int min_r = r.minutes + 60 * r.hours; minutes = (static_cast<int>(min_this) - static_cast<int>(min_r)) % 60; hours = (static_cast<int>(min_this) - static_cast<int>(min_r)) / 60; return *this; } ////////////////////////////////////////////////// Time &Time::operator*=(double mult) { size_t totalminutes = static_cast<size_t> (hours * mult * 60) + static_cast<size_t> (minutes * mult); hours = totalminutes / 60; minutes = totalminutes % 60; return *this; } ////////////////////////////////////////////////// Time operator+(const Time &r1, const Time &r2) { Time result(r1); return result += r2; } ////////////////////////////////////////////////// Time operator-(const Time &r1, const Time &r2) { Time result(r1); return result -= r2; } ////////////////////////////////////////////////// Time operator*(double val, const Time &r) { Time result(r); return result *= val; } ////////////////////////////////////////////////// Time operator*(const Time &r, double val) { return val * r; } ////////////////////////////////////////////////// using namespace std; int main() { srand(time(0)); for (int k = 0; k < 20; ++k) { Time t1(rand() % 10, rand() % 60); Time t2; for (;;) { t2 = Time(rand() % 10, rand() % 60); if (t2 < t1) break; } double d = static_cast<double>(rand()) / RAND_MAX + rand() % 10; cout << t1 << " + " << t2 << " = " << t1 + t2 << endl; cout << t1 << " - " << t2 << " = " << t1 - t2 << endl; cout << t1 << " * " << setprecision(2) << d << " = " << t1 * d << endl; cout << "*******************************************************************************" << endl; } return 0; }