Назад | Начало урока | Вперед
Содержание

Глава 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


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz