1 Программирование на языке Паскаль Максимальный элемент массива 2 Максимальный элемент Задача: найти в массиве максимальный элемент. Алгоритм: Псевдокод: { считаем, что первый элемент – максимальный } for i:=2 to N do if a[i] > { максимального } then { запомнить новый максимальный элемент a[i] } ? Почему цикл от i=2? 3 Максимальный элемент Дополнение: как найти номер максимального элемента? max := a[1]; { считаем, что первый – максимальный } iMax := 1; for i:=2 to N do { проверяем все остальные } if a[i] > a[iMax] max then { нашли новый максимальный } begin max := a[i]; { запомнить a[i] } iMax := i; { запомнить i } end; ? Как упростить? По номеру элемента iMax всегда можно найти его значение a[iMax]. Поэтому везде меняем max на a[iMax] и убираем переменную max. Программа program qq; const N = 5; var a: array [1..N] of integer; i, iMax: integer; begin случайные числа в writeln('Исходный массив:'); интервале [50,150) for i:=1 to N do begin for i:=1 to N do begin a[i]:=:=random(100) random(100)+ +50; 50; a[i] поиск write(a[i]:4); write(a[i]:4); максимального end; end; iMax := := 1; { считаем, считаем, что что первый первый – – максимальный максимальный } } iMax 1; { for i:=2 i:=2 to { проверяем все остальные остальные } for to N N do do { проверяем все } if a[i] a[i] > > a[iMax] новый максимальный максимальный } } if a[iMax] then then { { новый iMax := := i; i; { запомнить i i } iMax { запомнить } writeln; {перейти на новую строку} writeln('Максимальный элемент a[', iMax, ']=', a[iMax]); end; 4 5 Задания "4": Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и найти в нем максимальный и минимальный элементы и их номера. Пример: Исходный массив: 4 -5 3 10 -4 -6 8 -10 1 0 максимальный a[4]=10 минимальный a[8]=-10 "5": Заполнить массив из 10 элементов случайными числами в интервале [-10..10] и найти в нем два максимальных элемента и их номера. Пример: Исходный массив: 4 -5 3 10 -4 -6 8 -10 максимальные a[4]=10, a[7]=8 1 0 • Найти максимальный (минимальный) элемента массива, а также его порядковый номер. program prim3; uses crt; var i,n,r,max,min,imax,imin:integer; a:array[1..10000] of integer; begin clrscr; randomize; write('число элементов n= '); readln(n); for i:=1 to n do begin a[i]:=random(45)-22; {Получаем случайные числа и выводим их на экран.} write(a[i],' '); end; {За начальный максимум (минимум) берем первый элемент массива.} min:=a[1]; max:=a[1]; for i:=1 to n do begin {Если найдется элемент, меньший MIN, то MIN будет равен этому элементу. Одновременно запоминаем индекс промежуточного минимума.} if a[i]<=min then begin min:=a[i]; imin:=i; end; {Если найдется элемент, больший МАХ, то МАХ будет равен этому элементу. Одновременно запоминаем индекс промежуточного максимума.} if a[i]>= max then begin max:=a[i]; imax:=i; end; end; {Печатаем минимальный элемент и его индекс.} writeln(' наименьший=' , min,' номер' , imin); {Печатаем максимальный элемент и его индекс.} writeln(' наиболльший' , max, ' номер' ,imax); readkey; end.