diff options
| author | Syndamia <kamen@syndamia.com> | 2023-11-02 15:00:22 +0200 |
|---|---|---|
| committer | Syndamia <kamen@syndamia.com> | 2023-11-02 15:00:22 +0200 |
| commit | d09b1a288ae51fe2e141676948d225296f2f7d72 (patch) | |
| tree | 7e3666545c04c4602be5374859001bf03e98f4b3 /week03/exercise08.cpp | |
| parent | fbbe586d25b1ebaf66fe2e92e1986bb5debf961d (diff) | |
| download | upp-2023-solutions-d09b1a288ae51fe2e141676948d225296f2f7d72.tar upp-2023-solutions-d09b1a288ae51fe2e141676948d225296f2f7d72.tar.gz upp-2023-solutions-d09b1a288ae51fe2e141676948d225296f2f7d72.zip | |
[w3] Added solutions
Diffstat (limited to 'week03/exercise08.cpp')
| -rw-r--r-- | week03/exercise08.cpp | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/week03/exercise08.cpp b/week03/exercise08.cpp new file mode 100644 index 0000000..736ed31 --- /dev/null +++ b/week03/exercise08.cpp @@ -0,0 +1,43 @@ +#include <iostream> + +int main() { + unsigned int time = 0; + char input; + unsigned int mode = 0; + bool twelveHour = false; + while (true) { + std::cin >> input; + switch (input) { + case 'c': + if (mode == 0) { + unsigned newHour; + std::cin >> newHour; + time = 60 * newHour + time % 60; + } + else if (mode == 1) { + unsigned newMinutes; + std::cin >> newMinutes; + time = (time - time % 60) + newMinutes; + } + mode = (mode + 1) % 3; + twelveHour = !twelveHour; + case 'f': + twelveHour = !twelveHour; + if (mode == 0) { + time -= 1; + } + case 't': + if (mode == 0) { + time = (time + 1) % 1440; // 60 minutes * 24 hours + } + if (twelveHour) { + bool pm = (time / 60) > 12; + std::cout << (time / 60) - 12 * pm << ":" << (time % 60) << " " << (pm ? "PM" : "AM") << std::endl; + } + else { + std::cout << (time / 60) << ":" << (time % 60) << std::endl; + } + break; + } + } +} |
