![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Уважаемые возникла такая проблема.
Условие: Имеется некий автобусный маршрут №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 Начал писать код, совсем запутался. Подскажите, как лучше решить проблему. Код:
function time(a, c: double): double; var h1: double; begin h1 := (INT(A) + INT(c)) * 60 + (frac(a) + frac(c)) * 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(c)) * 60 + (frac(w) + frac(c)) * 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. |
#2
|
||||
|
||||
![]() Попробуй название функции time, заменить на time1, потому что time это зарезервированное слово.
![]() Последний раз редактировалось Zylex, 12.04.2008 в 15:12. |
#3
|
||||
|
||||
![]() Код:
procedure TForm1.Button1Click(Sender: TObject); var w,b,x,y: String; begin x := formatdatetime('hh:mm', strtotime(edit3.text)); b := formatdatetime('hh:mm', strtotime(edit2.text)); w := formatdatetime('hh:00', strtotime(Edit1.Text)); y := Formatdatetime('hh:mm', strtotime(w) + strtotime(x)); listbox1.Items.Add(w + ' - ' + y); while w < b do begin w := formatdatetime('hh:mm',strtotime(w) + strtotime(x)); y := Formatdatetime('hh:mm', strtotime(w) + strtotime(x)); ListBox1.Items.Add(w + ' - ' + y); end; end; procedure TForm1.FormCreate(Sender: TObject); begin edit3.Text := '00:30'; edit3.Visible := false; end; Если я тебя правильно понял, то вот код, здесь я написал все что ты хотел, а если что еще надо сам думаю допишешь. ![]() Последний раз редактировалось Zylex, 12.04.2008 в 08:26. |
#4
|
|||
|
|||
![]() Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Mask, DateUtils; type TForm1 = class(TForm) Button1: TButton; MaskEdit1: TMaskEdit; MaskEdit2: TMaskEdit; MaskEdit3: TMaskEdit; Memo1: TMemo; Button2: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var a,b,c:string; at,bt,ct:TDateTime; i,j,k, k1:integer; begin Memo1.Lines.Clear; a:=FormatDateTime('hh:mm',StrToTime(MaskEdit1.Text)); b:=FormatDateTime('hh:mm',StrToTime(MaskEdit2.Text)); c:=FormatDateTime('hh:mm',StrToTime(MaskEdit3.Text)); i:=MinutesBetween(StrToTime(a),StrToTime(b)); j:=MinutesBetween(0,StrToTime(c)); k:=i div j; at:=StrToTime(a); bt:=StrToTime(b); ct:=StrToTime(c); For i:=0 to k do begin a:=FormatDateTime('hh:mm',at); c:=FormatDateTime('hh:mm',at+ct); Memo1.Lines.Add(a +' '+c); at:=at+ct; end; end; end. Может я конечно чего и наворотил, извиняюсь. Но работает вроде как надо. |
#5
|
|||
|
|||
![]() Друзья, всем спасибо огромное!
|