hozer

[OOP]VencLab1c

Sep 3rd, 2014
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.20 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. //наша структура времени
  5. typedef struct {
  6.     int h, m;
  7. } time;
  8.  
  9. //вводим время в структуру времени
  10. //Т передается по адресу, чтоб можно было поменять его внутри ф-ции
  11. void input(time *t)
  12. {
  13.     //т.к. Т по адресу, то юзаем -> для доступа к полям
  14.     printf("input h m: "); scanf("%d %d", &t->h, &t->m);
  15. }
  16.  
  17. //проверяем время на истинность и валидность
  18. int check(time t)
  19. {
  20.     if (t.h >= 1 && t.h <= 24 && t.m >= 1 && t.m <= 60)
  21.         return 1;
  22.     else
  23.         return 0;
  24. }
  25.  
  26. //выводим время в мир
  27. void output(time t)
  28. {
  29.     printf("h=%d m=%d\n", t.h, t.m);
  30. }
  31.  
  32. //вычисляем время в минутах
  33. int minutes(time t)
  34. {
  35.     return (t.h+1) * 60 + t.m;
  36. }
  37.  
  38. //переносимся на 20 минут вперед
  39. void shiftForvard(time *t)
  40. {
  41.     t->m += 20; //добавили 20 мин
  42.     if (t->m > 60) { //если больше 60, то
  43.         t->h += t->m / 60; //делим на 60, получаем целое число часов и добавляем в структуру
  44.         t->m -= t->m / 60 * 60; //делим на 60 и множим на 60, чтоб получить время, которое ушло в часы, вычетаем
  45.     }
  46. }
  47.  
  48. //переносимся на 20минут назад
  49. void shiftBack(time *t)
  50. {
  51.     t->m -= 20;
  52.     if (t->m <= 0) {
  53.         int hh = 0; //переменная на "нужное кол-во часов"
  54.         hh = -t->m / 60; //узнаем, сколько нам надо часов для балансировки времени и пространства
  55.         if (t->h >= hh + 1) //если часы есть, работаем
  56.         {
  57.             t->h -= hh + 1; //забираем часы
  58.             t->m += (hh + 1) * 60; //часы превращаем в минуты и вычитаем
  59.         }
  60.     }
  61. }
  62.  
  63. void main()
  64. {
  65.     //ну, тут все должно быть понятно
  66.     time t1, t2;
  67.     input(&t1);
  68.     check(t1);
  69.     shiftBack(&t1);
  70.     output(t1);
  71.     shiftForvard(&t1);
  72.     output(t1);
  73.  
  74.     input(&t2);
  75.     check(t2);
  76.     shiftBack(&t2);
  77.     shiftBack(&t2);
  78.     output(t2);
  79.  
  80.     getch();
  81. }
Advertisement
Add Comment
Please, Sign In to add comment