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

Глава 3

Задача 3.4 "Часовые пояса "

Компания, занимающаяся электронной коммерцией и расположенная в Лондоне, Великобритания, имеет клиентов в разных точках мира. Иногда ее сотрудникам приходится оформлять заказы по телефону. В таких случаях необходимо знать, какое время сейчас в определенном часовом поясе. Лондон работает по всеобщему времени (ВВ). Выведите таблицу со значениями времени от 0:00 до 23:00 для городов Ванкувер(-8 часов от ВВ), Нью-Иорк (-5 часов), Кейптаун (+2) и Сидней(+10). Используйте класс Time для вычисления значений времени в других часовых поясах.

Решение

Сначала инициируем переменные значениями, соответствующими 00 час 00 мин, по всеобщему времени:

Time London = new Time (00.00);
Time Vancuver = new Time (16.00);
Time NewYork = new Time (19.00);
Time CapeTown = new Time (02.00);
Time Sidney = new Time (10.00);
Time FullTime = new Time(24.00);

Затем в цикле будем добавлять время NewYork.addTime(m) по 60 минут в созданные нами объекты Time. Кроме того надо не забывать сбрасывать в нуль, содержимое объекта Time при достижении им 24 часов, чтобы начать добавлять время с нуля:

int m = 60;
Time open = new Time (0.00);
Time close = new Time (24,0);
for (Time ofDay = open; ofDay.lessThan(close); ofDay.addTime(60)) {

Time CheckTime = new Time(00.00);
London.addTime(m);

NewYork.addTime(m);
if(close.lessThan(NewYork)){

NewYork = CheckTime;
NewYork.addTime(m);
}


Vancuver.addTime(m);
if(close.lessThan(Vancuver)){

Vancuver = CheckTime;
Vancuver.addTime(m);
}
...


Код программы:


class TimeZone {

// Vancuver (-8 hour) // NewYork (-5 hour)
// CapeTown (+ 2 hour)
// Sidney (+10 hour)

Time London = new Time (00.00);
Time Vancuver = new Time (16.00);
Time NewYork = new Time (19.00);
Time CapeTown = new Time (02.00);
Time Sidney = new Time (10.00);
Time FullTime = new Time(24.00);
TimeZone () {

System.out.print("London " + "\t\t" + "NewYork " + "\t\t" + "Vancuver " + "\t\t" +
"CapeTown " + "\t" + "Sidney " );
System.out.print("\n");

int m = 60;
Time open = new Time (0.00);
Time close = new Time (24,0);
for (Time ofDay = open; ofDay.lessThan(close); ofDay.addTime(60)) {

Time CheckTime = new Time(00.00);
London.addTime(m);

NewYork.addTime(m);
if(close.lessThan(NewYork)){

NewYork = CheckTime;
NewYork.addTime(m);
}


Vancuver.addTime(m);
if(close.lessThan(Vancuver)){

Vancuver = CheckTime;
Vancuver.addTime(m);
}


CapeTown.addTime(m);
if(close.lessThan(CapeTown)){

CapeTown = CheckTime;
CapeTown.addTime(m);
}
Sidney.addTime(m);
if(close.lessThan(Sidney)){
Sidney = CheckTime;
Sidney.addTime(m);
}

System.out.print(London + "\t\t" + NewYork + "\t\t\t" + Vancuver + "\t\t\t" +
CapeTown + "\t\t" + Sidney );
System.out.print("\n");

}
}
//-------------------
class Time {
int hour;
int min;

Time (int h, int m) {

hour = h;
min = m;
}


Time (int mins) {

hour = mins / 60; min = mins % 60;
}


Time (double t) {

hour = (int) t; min = (int) t*100 - hour*100;
}


Time (Time t) {

hour = t.hour;
min = t.min;
}


void addTime (int m) {

min +=m; hour+= min / 60; min %= 60;
}


boolean lessThan (Time t) {

return hour < t.hour | (hour==t.hour & min < t.min);
}


public String toString () {

return hour + ":" + min + " ";
}
}
//--------------------------

public static void main (String [] args) {

new TimeZone ();
}
}


Результат :

Подсказка


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

Hosted by uCoz