Описать запись с именем TRAIN, содержащую следующие поля: NAZN — название пункта назначения NUMR — номер поезда TIME — время отправления. Написать программу, выполняющую следующие действия: ввод с клавиатуры данных в массив RASP, состоящий из шести элементов типа TRAIN; записи должны быть упорядочены по времени отправления поезда;вывод на экран информации о поездах, направляющихся в пункт, название которого введено с клавиатуры; если таких поездов нет, выдать на дисплей соответствующее сообщение — Delphi(Делфи)

uses vcl;
type TRAIN = record
     NAZN:string[40];
     NUMR:string[40];
     TIME1: integer;
     time2: integer;
     sum: integer;
end;
var
   rasp:array [1..6] of train;
   sum,i,j,k,n:integer;
   str,str2: array[1..6] of string;
   a: string;
//$VCLDESIGN+
var
  Form1: Form;
  TextLabel1: TextLabel;
  TextLabel2: TextLabel;
  TextLabel3: TextLabel;
  TextLabel4: TextLabel;
  TextLabel5: TextLabel;
  TextLabel6: TextLabel;
  TextBox1: TextBox;
  SpinEdit1: SpinEdit;
  SpinEdit2: SpinEdit;
  Edit1: Edit;
  Edit2: Edit;
  Button1: Button;
  Button2: Button;
  Button3: Button;
  TextBox2: TextBox;
  Edit3: Edit;
//$VCLDESIGN-

procedure LinSortStr (var mas: array [1..6] of string; var size: integer);
 var
  j,i: integer;
  n: string;
 begin
  for i:=1 to size-1 do
   for j:=i+1 to size do
    begin
     if mas[i]>mas[j] then
      begin
       n:=mas[i];
       mas[i]:=mas[j];
       mas[j]:=n;
      end;
  end;end;

procedure Button1OnClick;
begin
  inc(i);
  rasp[i].nazn:=edit1.text;
  rasp[i].numr:=edit2.text;
  rasp[i].time1:=spinedit1.value;
  rasp[i].time2:=spinedit2.value;
  str[i]:= '№' + rasp[i].numr + ' ' +rasp[i].nazn + ' '  + inttostr(rasp[i].time1) + ':' +inttostr(rasp[i].time2);
  textbox1.lines.add(str[i]);
end;

procedure Button2OnClick;
begin
  n:=6;
  For j:=1 to 6 do
  str2[j]:=inttostr(rasp[j].time1)+  ':' + inttostr(rasp[j].time2);
  textbox1.clear;
  linsortstr(str2,n);
  For j:=1 to 6 do
  textbox1.lines.add( '№' + rasp[j].numr+ ' '+rasp[j].nazn + ' '+ str2[j] );
end;

procedure Edit3OnClick;
begin
end;

procedure Button3OnClick;
begin
  a:= Edit3.text;
  for i:=1 to 6 do
   if rasp[i].nazn = a then textbox2.lines.add( '№' +rasp[i].numr + ' ' +rasp[i].nazn + ' ' +   inttostr(rasp[i].time1) + ':' + inttostr(rasp[i].time2));
end;


procedure InitControls;
begin
  Form1:= Form.Create(0,0,714,384);
  Form1.InitControl(True,False,alNone,crDefault,clBtnFace,'Расписание поездов','');
  TextLabel1:= TextLabel.Create(Form1,368,168,25,13);
  TextLabel1.InitControl(True,True,alNone,crDefault,clBtnFace,'часы','');
  TextLabel2:= TextLabel.Create(Form1,440,168,38,13);
  TextLabel2.InitControl(True,True,alNone,crDefault,clBtnFace,'минуты','');
  TextLabel3:= TextLabel.Create(Form1,64,164,92,17);
  TextLabel3.InitControl(True,True,alNone,crDefault,clBtnFace,'Пункт назначения','');
  TextLabel4:= TextLabel.Create(Form1,232,160,73,33);
  TextLabel4.InitControl(True,True,alNone,crDefault,clBtnFace,'Номер поезда','');
  TextLabel5:= TextLabel.Create(Form1,384,144,101,13);
  TextLabel5.InitControl(True,True,alNone,crDefault,clBtnFace,'Время отправления','');
  TextLabel6:= TextLabel.Create(Form1,512,168,135,13);
  TextLabel6.InitControl(True,True,alNone,crDefault,clBtnFace,'Введите пункт назначения','');
  TextBox1:= TextBox.Create(Form1,56,24,217,89);
  TextBox1.InitControl(True,True,alNone,crDefault,clWindow,'','');
  TextBox1.ScrollBars:= ssNone;
  SpinEdit1:= SpinEdit.Create(Form1,368,184,41,22);
  SpinEdit1.InitControl(True,True,alNone,crDefault,clWindow,'12','');
  SpinEdit2:= SpinEdit.Create(Form1,440,184,41,22);
  SpinEdit2.InitControl(True,True,alNone,crDefault,clWindow,'30','');
  Edit1:= Edit.Create(Form1,56,184,121,21);
  Edit1.InitControl(True,True,alNone,crDefault,clWindow,'','');
  Edit2:= Edit.Create(Form1,232,184,81,21);
  Edit2.InitControl(True,True,alNone,crDefault,clWindow,'','');
  Button1:= Button.Create(Form1,56,232,75,25);
  Button1.InitControl(True,True,alNone,crDefault,0,'Добавить','');
  Button2:= Button.Create(Form1,160,232,75,25);
  Button2.InitControl(True,True,alNone,crDefault,0,'Показать','');
  Button3:= Button.Create(Form1,256,232,321,25);
  Button3.InitControl(True,True,alNone,crDefault,0,'информация  о поездах определенного пункта назначения','');
  TextBox2:= TextBox.Create(Form1,368,24,185,89);
  TextBox2.InitControl(True,True,alNone,crDefault,clWindow,'','');
  TextBox2.ScrollBars:= ssNone;
  Edit3:= Edit.Create(Form1,512,184,137,21);
  Edit3.InitControl(True,True,alNone,crDefault,clWindow,'','');
  SpinEdit1.Max:= 23;
  SpinEdit1.Tag:= 3;
  SpinEdit2.Max:= 60;
  Button1.OnClick:=Button1OnClick;
  Button2.OnClick:=Button2OnClick;
  Button3.OnClick:=Button3OnClick;
  Edit3.OnClick:=Edit3OnClick;
  Form1.Position:= poScreenCenter;
  Form1.Show;
end;

begin
  InitControls;

end.

Процедура сортировки по алфавиту

procedure insert(idx:integer;str:Train);
 var j:integer;
begin
 for j:=N-1 downto idx do
  data[j+1]:=data[j];
 data[idx]:=str;
end;

procedure delete(idx:Train);
 var j:integer;
begin
 for j:=idx to n-1 do
 data[j]:=data[j+1];
end;

procedure sort;

 begin
   for i := 0 to (N-1) do
     for x := 0 to (N - 1) do
       if (data[x].nazn < data[i].nazn) and (x > i) then
       begin
         Insert(i, data[x]);
         Delete(x+ 1);
       end;
 end;

Leave a Comment

44 + = 54