Глава 2
Задача 2.7 Рабочие смены на фабрике.
На фабрике 24-часовой день разделен на три смены следующим образом:
1-я смена с 0000 до 0759
2-я смена с 0800 до 1559
3-я смена с 1600 до 2359
Напишите программу, которая вычисляет, сколько времени осталось работать текущей смене, а так же выводит на экран номер этой смены. (Подсказка: используйте операторы % и /, как в примере 2.6)
Решение
Введем переменные:
// t - test time 10 hour 30 min
// t1 = 15 hour 59 min
// t2 = 23 hour 59 min
// t3 = 7 hour 59 min
int t = (1030/100*60)+ 1030%100; // текущее время
int t1 = (1559/100*60)+ 1559%100; // окончание 2-й смены
int t2 = (2359/100*60)+ 2359%100; // окончание 3-й смены
int t3 = (759/100*60)+ 759%100; // окончание 1-й смены
Сутки раздалены на три смены. Проверим при помощи оператора if к какой смене относится текущее время, и сосчитаем сколько времени осталось до конца смены. Выведем результат:
if(t > t3 && t<=t1)
System.out.println(" Это 1-я смена. До конца 1-й смены: " + (t1 - t)/60 + " hour " + (t1 - t)%60 + " min");
if(t >=t1 && t<=t2)
System.out.println(" Это 2-я смена. До конца 2-й смены: " + (t2 - t)/60 + " hour " + (t2 - t)%60 + " min");
if(t >0 && t<=t3)
System.out.println(" Это 3-я смена. До конца 3-й смены: " + (t3 - t)/60 + " hour " + (t3 - t)%60 + " min");
// t = 19 hour 45 min
t = (1945/100*60)+ 1945%100; // check time
Протестируем программу трижды - 10ч30м, 19ч45м, 1ч10м.
Код программы:
class WorkTime {
WorkTime () {
// t - test time 10 hour 30 min
// t1 = 15 hour 59 min
// t2 = 23 hour 59 min
// t3 = 7 hour 59 min
int t = (1030/100*60)+ 1030%100; // check time
int t1 = (1559/100*60)+ 1559%100; // end 2 time
int t2 = (2359/100*60)+ 2359%100; // end 3 time
int t3 = (759/100*60)+ 759%100; // end 1 time
// System.out.println(" t: " + t + " min");
// System.out.println(" t1: " + t1 + " min");
// System.out.println(" t2: " + t2 + " min");
// System.out.println(" t3: " + t3 + " min");
if(t > t3 && t<=t1)
System.out.println(" It is 1 worktime. Bis end of 1 worktime: " + (t1 - t)/60 + " hour " + (t1 - t)%60 + " min");
if(t >=t1 && t<=t2)
System.out.println(" It is 2 worktime. Bis end of 2 worktime: " + (t2 - t)/60 + " hour " + (t2 - t)%60 + " min");
if(t >0 && t<=t3)
System.out.println(" It is 3 worktime. Bis end of 3 worktime: " + (t3 - t)/60 + " hour " + (t3 - t)%60 + " min");
// t = 19 hour 45 min
t = (1945/100*60)+ 1945%100; // check time
if(t > t3 && t<=t1)
System.out.println(" It is 1 worktime. Bis end of 1 worktime: " + (t1 - t)/60 + " hour " + (t1 - t)%60 + " min");
if(t >=t1 && t<=t2)
System.out.println(" It is 2 worktime. Bis end of 2 worktime: " + (t2 - t)/60 + " hour " + (t2 - t)%60 + " min");
if(t >0 && t<=t3)
System.out.println(" It is 3 worktime. Bis end of 3 worktime: " + (t3 - t)/60 + " hour " + (t3 - t)%60 + " min");
// t = 1 hour 10 min
t = (110/100*60)+ 110%100; // check time
if(t > t3 && t<=t1)
System.out.println(" It is 1 worktime. Bis end of 1 worktime: " + (t1 - t)/60 + " hour " + (t1 - t)%60 + " min");
if(t >=t1 && t<=t2)
System.out.println(" It is 2 worktime. Bis end of 2 worktime: " + (t2 - t)/60 + " hour " + (t2 - t)%60 + " min");
if(t >0 && t<=t3)
System.out.println(" It is 3 worktime. Bis end of 3 worktime: " + (t3 - t)/60 + " hour " + (t3 - t)%60 + " min");
}
public static void main (String[] args) {
new WorkTime ();
}
}
Результат :
Это 1-я смена. До конца 1-й смены:: 5 hour 29 min
Это 2-я смена. До конца 2-й смены:: 4 hour 14 min
Это 3-я смена. До конца 3-й смены:: 6 hour 49 min
Назад |
Начало урока |
Вверх |
Вперед
Содержание