Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <conio.h>
- //наша структура времени
- typedef struct {
- int h, m;
- } time;
- //вводим время в структуру времени
- //Т передается по адресу, чтоб можно было поменять его внутри ф-ции
- void input(time *t)
- {
- //т.к. Т по адресу, то юзаем -> для доступа к полям
- printf("input h m: "); scanf("%d %d", &t->h, &t->m);
- }
- //проверяем время на истинность и валидность
- int check(time t)
- {
- if (t.h >= 1 && t.h <= 24 && t.m >= 1 && t.m <= 60)
- return 1;
- else
- return 0;
- }
- //выводим время в мир
- void output(time t)
- {
- printf("h=%d m=%d\n", t.h, t.m);
- }
- //вычисляем время в минутах
- int minutes(time t)
- {
- return (t.h+1) * 60 + t.m;
- }
- //переносимся на 20 минут вперед
- void shiftForvard(time *t)
- {
- t->m += 20; //добавили 20 мин
- if (t->m > 60) { //если больше 60, то
- t->h += t->m / 60; //делим на 60, получаем целое число часов и добавляем в структуру
- t->m -= t->m / 60 * 60; //делим на 60 и множим на 60, чтоб получить время, которое ушло в часы, вычетаем
- }
- }
- //переносимся на 20минут назад
- void shiftBack(time *t)
- {
- t->m -= 20;
- if (t->m <= 0) {
- int hh = 0; //переменная на "нужное кол-во часов"
- hh = -t->m / 60; //узнаем, сколько нам надо часов для балансировки времени и пространства
- if (t->h >= hh + 1) //если часы есть, работаем
- {
- t->h -= hh + 1; //забираем часы
- t->m += (hh + 1) * 60; //часы превращаем в минуты и вычитаем
- }
- }
- }
- void main()
- {
- //ну, тут все должно быть понятно
- time t1, t2;
- input(&t1);
- check(t1);
- shiftBack(&t1);
- output(t1);
- shiftForvard(&t1);
- output(t1);
- input(&t2);
- check(t2);
- shiftBack(&t2);
- shiftBack(&t2);
- output(t2);
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment