#include <iostream>
using std::cout, std::endl;


/*
    Использовать функции может быть не так удобно как операторы.
    Возможно было бы удобней для добавления времени использовать не функцию add, а оператор +

    Можно перегрузить оператор функцией, для этого нужно назвать функцию так: operator@
    где за место @ нужно подставить оператор, который вы хотите перегрузить

    Например, функция Time operator+(Time t, int x) перегружает оператор + для типов Time и int соответственно (обязательно в таком порядке)
    Теперь, когда компилятор встретит в коде сложение с таким операндами он вызовет эту функцию

    В этом примере  a + 90  при компиляции преобразуется в вызов функции  operator+(a, 90)

*/


struct Time 
{
    int minutes;
    int seconds;
};

Time operator+(Time t, int x)
{
    Time result = t;
    result.seconds += x;
    
    result.minutes += (result.seconds / 60);
    result.seconds %= 60;

    return result;
}


int main() 
{
    Time a = {20, 10};
    Time b = a + 90;

    cout << b.minutes << " " << b.seconds << endl;
}


/*

    Задача:

        1)  Что если операторы сложения поменяются местами
                Time b = 90 + a;
            Сработает ли в этом случае наша функция operator+ и, если нет, что нужно добавить, чтобы такое сложение сработало?
        

        2)  Напишите перегруженный оператор, который будет складывать не время и число, а два времени

                Time operator+(Time ta, Time tb)


        

*/