Сведения о поездах содержат следующую информацию: номер поезда, город отправления, город назначения, расстояние, средняя скорость, количество остановок. Создать массив записей (из 6-10 элементов) и заполнить его данными. Найти номер поезда, отправляющегося из Москвы, который проводит в пути больше времени, чем остальные, если время стоянки на каждой остановке – 15 минут. Решить эту же задачу с использованием очереди (вместо массива).
<em>// PascalABC.NET 3.2, сборка 1417 от 28.03.2017</em> <em>// Внимание! Если программа не работает, обновите версию!</em>
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.
<em>2. Вариант с очередью</em>
<em>// PascalABC.NET 3.2, сборка 1417 от 28.03.2017</em> <em>// Внимание! Если программа не работает, обновите версию!</em>
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.
<u>Пример работы</u> Количество поездов: 3 Вводите построчно информацию о каждом поезде через пробел: Номер поезда, город отправления, город назначения, расстояние, средняя скорость, количество остановок 1: 020с Москва Ростов 1130 69.97 5 2: 025Б Москва Минск 750 79.78 9 3: 037Н Томск Екатеринбург 1852 77.97 17 (020с,Москва,Ростов,1130,69.97,5)
1) uses crt; var m,p,s:real; k,n:integer; begin clrscr; write('Вклад(N)руб.: ');readln(m); write('Кол-во лет: ');readln(n); write('Процент: ');readln(p); k:=1; s:=m; for k:=1 to n do s:=s+s/100*p; writeln('s=',s); readkey; end. Не могу понять условия 2) и 3).