Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.04.2008, 03:33
wolf-vega wolf-vega вне форума
Прохожий
 
Регистрация: 03.04.2008
Сообщения: 7
Репутация: 10
По умолчанию Расчет времени маршрута

Уважаемые возникла такая проблема.

Условие:
Имеется некий автобусный маршрут №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  
Старый 11.04.2008, 08:33
Аватар для Zylex
Zylex Zylex вне форума
Прохожий
 
Регистрация: 06.04.2008
Адрес: Сыктывкар
Сообщения: 33
Репутация: 10
По умолчанию

Попробуй название функции time, заменить на time1, потому что time это зарезервированное слово.

Последний раз редактировалось Zylex, 12.04.2008 в 15:12.
Ответить с цитированием
  #3  
Старый 11.04.2008, 12:08
Аватар для Zylex
Zylex Zylex вне форума
Прохожий
 
Регистрация: 06.04.2008
Адрес: Сыктывкар
Сообщения: 33
Репутация: 10
По умолчанию

Код:
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  
Старый 11.04.2008, 14:30
MegaPiha MegaPiha вне форума
Активный
 
Регистрация: 24.03.2008
Сообщения: 227
Версия Delphi: Delphi 7
Репутация: 30
По умолчанию

Код:
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  
Старый 14.04.2008, 07:24
wolf-vega wolf-vega вне форума
Прохожий
 
Регистрация: 03.04.2008
Сообщения: 7
Репутация: 10
По умолчанию

Друзья, всем спасибо огромное!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:48.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025