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.
Тестовое решение:Элементы массива82 46 46 46 98 15 63 77 28 67 76 19 52 56 57 39 13 98 54 85 Найдено локальных минимумов: 6Найдено локальных максимумов: 5