Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Расчет времени маршрута, график движения маршрута
vega
Вставить ник
сообщение 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
 
Новая тема 
Ответов (1 - 5)
astronom
Вставить ник
сообщение 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 и вводить данные по маске. smile.gif

Сообщение отредактировал astronom - 11:04:2008, 06:12
Подняться вверх 
 
Сообщение #2
vega
Вставить ник
сообщение 11:04:2008, 06:27
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 8
Регистрация: 3:04:2008
Пользователь №: 16 338



Репутация: - 0 +


Спасибо, попробую!!!
Подняться вверх 
 
Сообщение #3
sax_ol
Вставить ник
сообщение 11:04:2008, 06:49
Цитата Ответить 


==============
*****

Группа: Модеры
Сообщений: 1 740
Регистрация: 11:01:2007
Пользователь №: 8 750
Специализация: specialist



Репутация: - 27 +


Цитата(astronom @ 11:04:2008 - 08:06) *
использовать MaskEdit и вводить данные по маске.

Лучше TDateTimePicker.
Подняться вверх 
 
Сообщение #4
astronom
Вставить ник
сообщение 11:04:2008, 10:13
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 25
Регистрация: 26:01:2008
Пользователь №: 15 004



Репутация: - 0 +


Цитата(sax_ol @ 11:04:2008, 08:49 ) *
Лучше TDateTimePicker.

Согласен.
Подняться вверх 
 
Сообщение #5
vega
Вставить ник
сообщение 14:04:2008, 04:07
Цитата Ответить 


Новенький
*

Группа: Программист
Сообщений: 8
Регистрация: 3:04:2008
Пользователь №: 16 338



Репутация: - 0 +


Друзья огромное спасибо!!!
Подняться вверх 
 
Сообщение #6


Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив
Подчеркнутый
Вставить изображение
Смайлики
Цитата
Код
 
 Отправлять уведомления об ответах на e-mail |  Включить смайлики |  Добавить подпись
   

 

RSS Текстовая версия Сейчас: 17:05:2008 - 06:56
с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net