Sha256: 4ba844f7b47c39d4aa0ba481db9ff67ea76bd9f844a34e608f6decca69f14ba6

Contents?: true

Size: 1.08 KB

Versions: 156

Compression:

Stored size: 1.08 KB

Contents

#include "clock.h"
#include <iomanip>
#include <sstream>

using namespace std;

namespace
{

const int minutes_per_hour = 60;
const int hours_per_day = 24;

}

namespace date_independent
{

clock& clock::plus(int minutes)
{
    minute_ += minutes;
    if (minute_ > minutes_per_hour) {
        hour_ += (minute_/minutes_per_hour);
        hour_ %= hours_per_day;
        minute_ %= minutes_per_hour;
    }
    return *this;
}

clock& clock::minus(int minutes)
{
    minute_ -= minutes;
    while (minute_ < 0) {
        --hour_;
        minute_ += minutes_per_hour;
    }
    while (hour_ < 0) {
        hour_ += hours_per_day;
    }
    return *this;
}

clock::operator string() const
{
    ostringstream str;
    str << setw(2) << setfill('0') << hour_ << ':' << setw(2) << setfill('0') << minute_;
    return str.str();
}

clock::clock(int hour, int minute)
    : hour_(hour),
    minute_(minute)
{
}

clock clock::at(int hour, int minute /*= 0*/)
{
    return clock(hour, minute);
}

bool clock::operator==(const clock& rhs) const
{
    return hour_ == rhs.hour_
        && minute_ == rhs.minute_;
}

}

Version data entries

156 entries across 156 versions & 1 rubygems

Version Path
trackler-2.0.6.20 tracks/cpp/exercises/clock/example.cpp
trackler-2.0.6.19 tracks/cpp/exercises/clock/example.cpp
trackler-2.0.6.18 tracks/cpp/exercises/clock/example.cpp
trackler-2.0.6.17 tracks/cpp/clock/example.cpp
trackler-2.0.6.16 tracks/cpp/clock/example.cpp
trackler-2.0.6.15 tracks/cpp/clock/example.cpp
trackler-2.0.6.14 tracks/cpp/clock/example.cpp
trackler-2.0.6.13 tracks/cpp/clock/example.cpp
trackler-2.0.6.12 tracks/cpp/clock/example.cpp
trackler-2.0.6.11 tracks/cpp/clock/example.cpp
trackler-2.0.6.10 tracks/cpp/clock/example.cpp
trackler-2.0.6.9 tracks/cpp/clock/example.cpp
trackler-2.0.6.8 tracks/cpp/clock/example.cpp
trackler-2.0.6.7 tracks/cpp/clock/example.cpp
trackler-2.0.6.6 tracks/cpp/clock/example.cpp
trackler-2.0.6.5 tracks/cpp/clock/example.cpp
trackler-2.0.6.4 tracks/cpp/clock/example.cpp
trackler-2.0.6.3 tracks/cpp/clock/example.cpp
trackler-2.0.6.2 tracks/cpp/clock/example.cpp
trackler-2.0.6.1 tracks/cpp/clock/example.cpp