Паскаль ABC.Net Помогите,пожалуйста:Сведения о поездах содержат следующую информацию: номер поезда, город отправления, город назначения, расстояние, средняя скорость, количество остановок. Создать массив записей (из 6-10 элемен...

Паскаль ABC.Net Помогите,пожалуйста:Сведения о поездах содержат следующую информацию: номер поезда, город отправления, город назначения, расстояние, средняя скорость, количество остановок. Создать массив записей (из 6-10 элементов) и заполнить его данными. Найти номер поезда, отправляющегося из Москвы, который проводит в пути больше времени, чем остальные, если время стоянки на каждой остановке – 15 минут. Решить эту же задачу с использованием очереди (вместо массива).
Гость
Ответ(ы) на вопрос:
Гость
1. Вариант с массивом // PascalABC.NET 3.2, сборка 1417 от 28.03.2017 // Внимание! Если программа не работает, обновите версию! type   Поезд=record     номер_поезда:string;     город_отправления:string;     город_назначения:string;     расстояние:integer;     средняя_скорость:real;     количество_остановок:integer     end; begin   var n:=ReadlnInteger('Количество поездов:');   var tr:=new Поезд[n];   Writeln('Вводите построчно информацию о каждом поезде через пробел:');   Writeln('Номер поезда, город отправления, город назначения, ');   Writeln('расстояние, средняя скорость, количество остановок');   var s:string;   for var i:=0 to n-1 do begin     Write(i+1,': '); Readln(s);     var w:=s.ToWords;     tr[i].номер_поезда:=w[0];     tr[i].город_отправления:=w[1];     tr[i].город_назначения:=w[2];     tr[i].расстояние:=w[3].ToInteger;     tr[i].средняя_скорость:=w[4].ToReal;     tr[i].количество_остановок:=w[5].ToInteger     end;     var tmax:=0.0;   var k:integer;   var t:real;   for var i:=0 to n-1 do     if tr[i].город_отправления='Москва' then begin       t:=tr[i].расстояние/tr[i].средняя_скорость+           0.25*tr[i].количество_остановок;       if t>tmax then (tmax,k):=(t,i)       end;   Println(tr[k]) end. 2. Вариант с очередью // PascalABC.NET 3.2, сборка 1417 от 28.03.2017 // Внимание! Если программа не работает, обновите версию! type   Поезд=record     номер_поезда:string;     город_отправления:string;     город_назначения:string;     расстояние:integer;     средняя_скорость:real;     количество_остановок:integer     end; begin   var n:=ReadlnInteger('Количество поездов:');   var tr:=new Queue<Поезд>;   var b:Поезд;   Writeln('Вводите построчно информацию о каждом поезде через пробел:');   Writeln('Номер поезда, город отправления, город назначения, ');   Writeln('расстояние, средняя скорость, количество остановок');   var s:string;   for var i:=0 to n-1 do begin     Write(i+1,': '); Readln(s);     var w:=s.ToWords;     b.номер_поезда:=w[0];     b.город_отправления:=w[1];     b.город_назначения:=w[2];     b.расстояние:=w[3].ToInteger;     b.средняя_скорость:=w[4].ToReal;     b.количество_остановок:=w[5].ToInteger;     tr.Enqueue(b)     end;     var tmax:=0.0;   var bmax:Поезд;   var t:real;   for var i:=1 to tr.Count do begin     b:=tr.Peek;     if b.город_отправления='Москва' then begin       t:=b.расстояние/b.средняя_скорость+           0.25*b.количество_остановок;       if t>tmax then (tmax,bmax):=(t,b)       end;     tr.Dequeue     end;   Println(bmax) end. Пример работы Количество поездов: 3 Вводите построчно информацию о каждом поезде через пробел: Номер поезда, город отправления, город назначения, расстояние, средняя скорость, количество остановок 1: 020с Москва Ростов 1130 69.97 5 2: 025Б Москва Минск 750 79.78 9 3: 037Н Томск Екатеринбург 1852 77.97 17 (020с,Москва,Ростов,1130,69.97,5)
Не нашли ответ?
Ответить на вопрос
Похожие вопросы