Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
|
10:04:2008, 23:25
|
|
Новенький ![]() Группа: Программист Сообщений: 8 Регистрация: 3:04:2008 Пользователь №: 16 338 Репутация: 0
|
Уважаемые возникла такая проблема.
Условие: Имеется некий автобусный маршрут №1. Мы имеем данные по данному маршруту, а именно: а:=время выхода автобуса на маршрут; b:=время схода автобуса с маршрута; с:=время затрачиваемое автобусом на один рейс. К примеру, a:=06.00 b:=22.00 с:=00.30 Задача: Составить дневной график движения маршрута. Т.е. он должен выглядеть так: 06.00 - 06.30 06.30 - 07.00 07.00 - 07.30 07.30 - 08.00 08.00 - 08.30 08.30 - 09.00 и т.д. до 22.00 Начал писать код, совсем запутался. Подскажите, как лучше решить проблему. CODE function time(a, c: double): double;
var h1: double; begin h1 := (INT(а) + INT(с)) * 60 + (frac(a) + frac(с)) * 100; result := int(h1 / 60) + (h1 - int(h1 / 60) * 60) / 100; end; function time2(w, c: double): double; var h1: double; begin h1 := (INT(w) + INT(с)) * 60 + (frac(w) + frac(с)) * 100; result := int(h1 / 60) + (h1 - int(h1 / 60) * 60) / 100; end; procedure TForm1.Button1Click(Sender: TObject); var a,b,c,w,z,x:double; begin a:=StrToFloat(Edit1.Text); b:=StrToFloat(Edit2.Text); c:=StrToFloat(Edit3.Text); w:=time(a,c); z:=time2(0,c); while w <= b do w:=w+z; ListBox1.Items.Add(FloatToStr(w)+' '+FloatToStr(z)); end; end. Сообщение отредактировал vega - 10:04:2008, 23:27 |
|
Сообщение
#1
|
|
![]() |
|
|
11:04:2008, 06:06
|
|
Новенький ![]() Группа: Программист Сообщений: 25 Регистрация: 26:01:2008 Пользователь №: 15 004 Репутация: 0
|
Можно, например так:
Код procedure TForm1.Button1Click(Sender: TObject); var a, b, c, Stop: TDateTime; TempStr: String; begin Form1.ListBox1.Clear; a:= StrToTime(Form1.Edit1.Text); b:= StrToTime(Form1.Edit2.Text); c:= StrToTime(Form1.Edit3.Text); While ((b - a) >= c) Do // Пока до конца "смены" осталось больше времени, чем требуется на преодоление маршрута Begin Stop:= a + c; TempStr:= TimeToStr(a) + ' - ' + TimeToStr(Stop); Form1.ListBox1.Items.Add(TempStr); a:= Stop; End; end; Естественно, необходимо добавить проверку введенных в поля ввода данных (в данном случае строка должна иметь вид: чч:мм:сс) или использовать MaskEdit и вводить данные по маске. Сообщение отредактировал astronom - 11:04:2008, 06:12 |
|
Сообщение
#2
|
|
|
|
11:04:2008, 06:27
|
|
Новенький ![]() Группа: Программист Сообщений: 8 Регистрация: 3:04:2008 Пользователь №: 16 338 Репутация: 0
|
Спасибо, попробую!!!
|
|
Сообщение
#3
|
|
|
|
11:04:2008, 06:49
|
|
============== ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 1 740 Регистрация: 11:01:2007 Пользователь №: 8 750 Специализация: specialist Репутация: 27
|
|
|
Сообщение
#4
|
|
|
|
11:04:2008, 10:13
|
|
Новенький ![]() Группа: Программист Сообщений: 25 Регистрация: 26:01:2008 Пользователь №: 15 004 Репутация: 0
|
|
|
Сообщение
#5
|
|
|
|
14:04:2008, 04:07
|
|
Новенький ![]() Группа: Программист Сообщений: 8 Регистрация: 3:04:2008 Пользователь №: 16 338 Репутация: 0
|
Друзья огромное спасибо!!!
|
|
Сообщение
#6
|
|
![]() |
|
Текстовая версия | Сейчас: 17:05:2008 - 06:56 |