Anasayfa

C ve Sistem Programcıları Derneği

  • CSD Hakkında
    • Yönetim Kurulu
    • Referanslar
    • Üyelik
    • Adres
    • Kroki
    • İletişim
  • Kurslar
    • Kurs Başvurusu
    • Eğitmenler
  • Seminerler
    • Seminer İste
    • Seminer Ver
  • Kaynaklar
    • Yararlı Linkler
    • Kaynak Kod Arşivi
    • Makaleler
    • Çalışma Soruları
    • Yararlı Kitaplar
    • Dosya Arşivi
    • Döküman Arşivi
  • Duyurular
  • Haberler
  • İş İlanları
    • İş İlanı Gönder
  • SSS
  • Kurs Başvurusu

menü

  • CSD Hakkında
    • Yönetim Kurulu
    • Referanslar
    • Üyelik
    • Adres
    • Kroki
    • İletişim
  • Kurslar
    • Kurs Başvurusu
    • Eğitmenler
  • Seminerler
    • Seminer İste
    • Seminer Ver
  • Kaynaklar
    • Yararlı Linkler
    • Kaynak Kod Arşivi
    • Makaleler
    • Çalışma Soruları
    • Yararlı Kitaplar
    • Dosya Arşivi
    • Döküman Arşivi
  • Duyurular
  • Haberler
  • İş İlanları
    • İş İlanı Gönder
  • SSS
  • Kurs Başvurusu

e-posta ile bilgilendirme.

Derneğimizdeki etkinliklerden haberdar olun!

Haber mektubu üyeliğiniz

Kimler çevrimiçi

Şu an 0 kullanıcı ve 3 ziyaretçi çevrimiçi.
""
dreamhost
Anasayfa

Time Sınıfı

26.03.2010 - 15:39 tarihinde nerg gönderdi

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ı.

Örnek ekran çıktısı: 

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

Kaynak kod: 
#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;
}
  • Yazıcı uyumluYazıcı uyumlu
  • Arkadaşa gönderArkadaşa gönder
  • PDFPDF
Etiketler:
  • C++

Adres: 2.Taşocağı Cd. Oğuz Sk. Barbaros Apt. No: 11/4 PK: 34387  Mecidiyeköy / İSTANBUL Tel: (212) 274 63 60  (212) 274 99 89  (212) 275 88 97  (212) 288 35 20 Fax: (212) 275 88 97 E-Posta: csystem@csystem.org

İçerik yayınları
Fervens Drupal theme by Leow Kah Thong. Designed by Design Disease and brought to you by Smashing Magazine.