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

Глава 2

Задача 2.12 Автобус, осуществляющий внутренние перевозки.

Автобус курсирует между двумя терминалами аэропорта, отправляясь через каждые полчаса. Напишите программу, которая на основе заданного времени путем инициализации соответствующей переменной вычисляет, сколько времени осталось до очередного отправления автобуса.

Решение

Определим переменные:

int t_current; текущее время
int t_begin; начало движения автобуса
int t_end; окончание движения автобуса
int interval; интервал между рейсами
int t_x; осталось до отправления автобуса
int t_otprav; время отправления автобуса

Время задаем так: 1015 - 10 часов 15 минут Затем переводим в минуты:

int t_current = (1015/100*60 + 1015%100);

Все манипуляции со временем производим в минутах, при выводе результатов опять переводим время в более удобную форму, в которой первоначально задавали.

if ((t_current < t_begin) | (t_current > t_end)) {

System.out.println(" Начало движения автобуса: " + (t_begin/60*100 + t_begin%60) );
}
else{
while(t_otprav < t_current)
t_otprav = (t_otprav+30);

t_x = (t_otprav - t_current);

System.out.println(" Автобус отправляется через " + t_x + " минут");
System.out.println("Отправление автобуса в : " + t_otprav/60 +" час " + t_otprav%60 + " мин" );

}

Трижды протестируем этот алгоритм с текущим временем: 10ч15м, 16ч25м, 22ч15м.

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



import java.awt.*;
import java.awt.event.*;

class Bus1 extends Frame {

Bus1() {

int t_current = (1015/100*60 + 1015%100);
int t_begin = (900/100*60 + 900%100);
int t_end = (2100/100*60 + 2100%100);
int interval;

int t_x;
int t_otprav = t_begin;


// t_begin = (t_begin/60*100 + t_begin%60);
// t_end = (t_end/60*100 + t_end%60);
// t_current = (t_current/60*100 + t_current%60);
// t_current1 = (t_current1/60*100 + t_current1%60);

System.out.println();
System.out.println(" Nachalo dvigheniya avtobusa " + (t_begin/60*100 + t_begin%60) );
System.out.println(" Okonchanie dvigheniya avtobusa " + (t_end/60*100 + t_end%60) );
System.out.println(" Seychas vremya " + (t_current/60*100 + t_current%60) );

if ((t_current < t_begin) | (t_current > t_end)) {

System.out.println(" Nachalo dvigheniya avtobusa: " + (t_begin/60*100 + t_begin%60) );
}
else{
while(t_otprav < t_current)
t_otprav = (t_otprav+30);

t_x = (t_otprav - t_current);

System.out.println(" Avtobus otpravlenie cherez " + t_x + " minut");
System.out.println("Avtobus otpravllenie v : " + t_otprav/60 +" chasov " + t_otprav%60 + " min" );

}


t_current = (1625/100*60 + 1625%100);
System.out.println();
System.out.println(" Nachalo dvigheniya avtobusa " + (t_begin/60*100 + t_begin%60) );
System.out.println(" Okonchanie dvigheniya avtobusa " + (t_end/60*100 + t_end%60) );
System.out.println(" Seychas vremya " + (t_current/60*100 + t_current%60) );
if ((t_current < t_begin) | (t_current > t_end)) {

System.out.println(" Nachalo dvigheniya avtobusa: " + (t_begin/60*100 + t_begin%60) );
}
else{
while(t_otprav < t_current)
t_otprav = (t_otprav+30);

t_x = (t_otprav - t_current);

System.out.println(" Avtobus otpravlenie cherez " + t_x + " minut");
System.out.println("Avtobus otpravllenie v : " + t_otprav/60 +" chasov " + t_otprav%60 + " min" );

}


t_current = (2215/100*60 + 2215%100);
System.out.println();
System.out.println(" Nachalo dvigheniya avtobusa " + (t_begin/60*100 + t_begin%60) );
System.out.println(" Okonchanie dvigheniya avtobusa " + (t_end/60*100 + t_end%60) );
System.out.println(" Seychas vremya " + (t_current/60*100 + t_current%60) );
if ((t_current < t_begin) | (t_current > t_end)) {

System.out.println(" Nachalo dvigheniya avtobusa: " + (t_begin/60*100 + t_begin%60) );
}
else{
while(t_otprav < t_current)
t_otprav = (t_otprav+30);

t_x = (t_otprav - t_current);

System.out.println(" Avtobus otpravlenie cherez " + t_x + " minut");
System.out.println("Avtobus otpravllenie v : " + t_otprav/60 +" chasov " + t_otprav%60 + " min" );

}


}


public static void main (String [ ] args) {

new Bus1();
}
}


Результат :

Nachalo dvigheniya avtobusa 900
Okonchanie dvigheniya avtobusa 2100
Seychas vremya 1015
Avtobus otpravlenie cherez 15 minut
Avtobus otpravllenie v : 10 chasov 30 min

Nachalo dvigheniya avtobusa 900
Okonchanie dvigheniya avtobusa 2100
Seychas vremya 1625
Avtobus otpravlenie cherez 5 minut
Avtobus otpravllenie v : 16 chasov 30 min

Nachalo dvigheniya avtobusa 900
Okonchanie dvigheniya avtobusa 2100
Seychas vremya 2215
Nachalo dvigheniya avtobusa: 900


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

Hosted by uCoz