1) пассажир Иванов живёт в Москве; 2) проводник живёт на полпути между Москвой и Санкт-Петербургом; 3) пассажир-однофамилец проводника живёт в Санкт-Петербурге; 4) у пассажира, который живёт ближе к месту жительства проводника, чем другие пассажиры, вдвое больше детей, чем у проводника; 5) у пассажира Петрова трое детей; 6) Сидоров (из поездной бригады) недавно выиграл у машиниста партию на бильярде
7) п1+п3 = проводник не Иванов. Кто-то из пассажиров живет в С-Петербурге 8) п4+п5+п7 = У Петрова нечетное кол-во детей, значит он не тот кто живет рядом с проводником. Петров живет в С-Петербурге 9) п3+п8 = У проводника фамилия Петров 10) п6+п9 = машинист не Сидоров. Машинист - Иванов
Const n=20; var a:array[1..n] of integer; i,nmax,nmin,k:integer; to_min:boolean; begin { инициализация массива случайными значениями } Randomize; Writeln('Элементы массива'); for i := 1 to n do begin a[i]:=Random(99)+1; { Интервал [1..99] } Write(a[i],' '); end; Writeln; { вот теперь массив действительно "задан" } k:=a[1]; nmax:=0; nmin:=0; i:=1; while (a[i]=k) and (i<=n) do Inc(i); if i<=n then begin to_min:=(a[i]<k); k:=a[i] end; for i:=i+1 to n do begin if (k<a[i]) and to_min then begin Inc(nmin); to_min:=false end else if (k>a[i]) and (not to_min) then begin Inc(nmax); to_min:=true end; k:=a[i] end; Writeln('Найдено локальных минимумов: ',nmin); Writeln('Найдено локальных максимумов: ',nmax) end.
2) проводник живёт на полпути между Москвой и Санкт-Петербургом;
3) пассажир-однофамилец проводника живёт в Санкт-Петербурге;
4) у пассажира, который живёт ближе к месту жительства проводника, чем другие пассажиры, вдвое больше детей, чем у проводника;
5) у пассажира Петрова трое детей;
6) Сидоров (из поездной бригады) недавно выиграл у машиниста партию на бильярде
7) п1+п3 = проводник не Иванов. Кто-то из пассажиров живет в С-Петербурге
8) п4+п5+п7 = У Петрова нечетное кол-во детей, значит он не тот кто живет рядом с проводником. Петров живет в С-Петербурге
9) п3+п8 = У проводника фамилия Петров
10) п6+п9 = машинист не Сидоров. Машинист - Иванов
ответ: Иванов
n=20;
var
a:array[1..n] of integer;
i,nmax,nmin,k:integer;
to_min:boolean;
begin
{ инициализация массива случайными значениями }
Randomize;
Writeln('Элементы массива');
for i := 1 to n do
begin
a[i]:=Random(99)+1; { Интервал [1..99] }
Write(a[i],' ');
end;
Writeln;
{ вот теперь массив действительно "задан" }
k:=a[1]; nmax:=0; nmin:=0; i:=1;
while (a[i]=k) and (i<=n) do Inc(i);
if i<=n then begin to_min:=(a[i]<k); k:=a[i] end;
for i:=i+1 to n do
begin
if (k<a[i]) and to_min then
begin Inc(nmin); to_min:=false end
else
if (k>a[i]) and (not to_min) then
begin Inc(nmax); to_min:=true end;
k:=a[i]
end;
Writeln('Найдено локальных минимумов: ',nmin);
Writeln('Найдено локальных максимумов: ',nmax)
end.
Тестовое решение:
Элементы массива
82 46 46 46 98 15 63 77 28 67 76 19 52 56 57 39 13 98 54 85
Найдено локальных минимумов: 6
Найдено локальных максимумов: 5