#include <iostream>
#include <cassert>
using namespace std;
struct Time
{
int sec;
int min;
int hour;
} ;
Time inTime( ) ;
void outTime( Time) ;
Time secToTime( int ) ;
int main ( )
{
cout << "Введите первый момент времени\n " ;
Time myTime1 = inTime( ) ;
cout << "Введите второй момент времени\n " ;
Time myTime2 = inTime( ) ;
int sec1 = ( myTime1.sec + ( myTime1.min * 60 ) + ( myTime1.hour * 3600 ) ) ,
sec2 = ( myTime2.sec + ( myTime2.min * 60 ) + ( myTime2.hour * 3600 ) ) ;
if ( sec1 > sec2)
sec1 - = sec2;
else
sec1 = sec2 - sec1;
cout << "Разница между введенными моментами времени: " ;
outTime( secToTime( sec1) ) ;
return 0 ;
}
// ввод времени
Time inTime( )
{
Time t;
cout << "Введите значения времени!\n >> часы: " ;
cin >> t.hour ;
assert ( t.hour >= 0 && t.hour <= 24 ) ;
cout << ">>минуты: " ;
cin >> t.min ;
assert ( t.min >= 0 && t.min < 60 ) ;
cout << ">>секунды: " ;
cin >> t.sec ;
assert ( t.sec >= 0 && t.sec < 60 ) ;
return t;
}
void outTime( Time t) {
cout << "Часов: " << t.hour << ", минут: " << t.min << ", секунд: " << t.sec ;
}
Time secToTime( int secs) {
Time t;
t.hour = secs / 3600 ;
t.min = ( secs % = 3600 ) / 60 ;
t.sec = secs % 60 ;
return t;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y2Fzc2VydD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApzdHJ1Y3QgVGltZQp7CiAgICBpbnQgc2VjOwogICAgaW50IG1pbjsKICAgIGludCBob3VyOwp9OwogClRpbWUgaW5UaW1lKCk7CnZvaWQgb3V0VGltZShUaW1lKTsKVGltZSBzZWNUb1RpbWUoaW50KTsKIAppbnQgbWFpbiAoKQp7CiAgICBjb3V0IDw8ICLQktCy0LXQtNC40YLQtSDQv9C10YDQstGL0Lkg0LzQvtC80LXQvdGCINCy0YDQtdC80LXQvdC4XG4iOwogICAgVGltZSBteVRpbWUxID0gaW5UaW1lKCk7CiAgICBjb3V0IDw8ICLQktCy0LXQtNC40YLQtSDQstGC0L7RgNC+0Lkg0LzQvtC80LXQvdGCINCy0YDQtdC80LXQvdC4XG4iOwogICAgVGltZSBteVRpbWUyID0gaW5UaW1lKCk7CiAKICAgIGludCBzZWMxID0gKG15VGltZTEuc2VjICsgKG15VGltZTEubWluICAqIDYwKSArIChteVRpbWUxLmhvdXIgKiAzNjAwKSksCiAgICAgICAgc2VjMiA9IChteVRpbWUyLnNlYyArIChteVRpbWUyLm1pbiAgKiA2MCkgKyAobXlUaW1lMi5ob3VyICogMzYwMCkpOwogCiAgICBpZiAoc2VjMSA+IHNlYzIpCiAgICAgICAgc2VjMSAtPSBzZWMyOwogICAgZWxzZQogICAgICAgIHNlYzEgPSBzZWMyIC0gc2VjMTsKIAogICAgY291dCA8PCAi0KDQsNC30L3QuNGG0LAg0LzQtdC20LTRgyDQstCy0LXQtNC10L3QvdGL0LzQuCDQvNC+0LzQtdC90YLQsNC80Lgg0LLRgNC10LzQtdC90Lg6ICI7CiAgICBvdXRUaW1lKHNlY1RvVGltZShzZWMxKSk7CiAKICByZXR1cm4gMDsKfQogCi8vINCy0LLQvtC0INCy0YDQtdC80LXQvdC4ClRpbWUgaW5UaW1lKCkKewogICAgVGltZSB0OwogICAgY291dCA8PCAi0JLQstC10LTQuNGC0LUg0LfQvdCw0YfQtdC90LjRjyDQstGA0LXQvNC10L3QuCFcbj4+INGH0LDRgdGLOiAiOwogICAgY2luID4+IHQuaG91cjsKICAgIGFzc2VydCh0LmhvdXIgPj0gMCAmJiB0LmhvdXIgPD0gMjQpOwogCiAgICBjb3V0IDw8ICI+PtC80LjQvdGD0YLRizogIjsKICAgIGNpbiAgPj4gdC5taW47CiAgICBhc3NlcnQodC5taW4gPj0gMCAmJiB0Lm1pbiA8IDYwKTsKIAogICAgY291dCA8PCAiPj7RgdC10LrRg9C90LTRizogIjsKICAgIGNpbiA+PiB0LnNlYzsKICAgIGFzc2VydCh0LnNlYyA+PSAwICYmIHQuc2VjIDwgNjApOwpyZXR1cm4gdDsKfQoKdm9pZCBvdXRUaW1lKFRpbWUgdCl7Cgljb3V0IDw8ICLQp9Cw0YHQvtCyOiAiIDw8IHQuaG91ciA8PCAiLCDQvNC40L3Rg9GCOiAiIDw8IHQubWluIDw8ICIsINGB0LXQutGD0L3QtDogIiA8PCB0LnNlYzsKfQoKVGltZSBzZWNUb1RpbWUoaW50IHNlY3MpewoJVGltZSB0OwoJdC5ob3VyID0gc2VjcyAvIDM2MDA7CiAgICB0Lm1pbiA9IChzZWNzICU9IDM2MDApIC8gNjA7CiAgICB0LnNlYyA9IHNlY3MgJSA2MDsKICAgIHJldHVybiB0Owp9