Алгоритмы нахождения наибольшего или наименьшего элемента массива и его индекса
Задача 1. Дан массив K, состоящий из 45 элементов. Элементы массива - произвольные целые числа. Определить минимальный элемент массива и его индекс. USES Crt; VAR K:ARRAY[0..45] OF INTEGER; I,IND: BYTE; MIN:INTEGER; BEGIN ClrScr; Randomize; WriteLn(' Значения элементов массива'); FOR I:=1 TO 45 DO Begin K[I]:=Random(35)+6; Write(K[I]:3); End; WriteLn; MIN:=K[1]; IND:=1; { нахождение минимального значения и его индекса } FOR I:=2 TO 45 DO IF K[I]<MIN THEN Begin MIN:=K[I]; IND:=I; End; WriteLn(' Минимальное значение = ',MIN); WriteLn(' Индекс минимального значения = ',IND); END. Задача 2. Дан массив B, состоящий из N элементов. Элементы массива - произвольные целые числа. Определить сумму элементов, расположенных до максимального элемента массива. USES Crt; CONST N=20; VAR B:ARRAY[0..N] OF INTEGER; I,IND: BYTE; MAX,S:INTEGER; BEGIN ClrScr; Randomize; WriteLn(' Значения элементов массива'); FOR I:=1 TO N DO Begin B[I]:=Random(35); Write(B[I]:3); End; WriteLn; MAX:=B[1]; IND:=1; { нахождение максимального значения и его индекса } FOR I:=2 TO N DO IF B[I]>MAX THEN Begin MAX:=B[I]; IND:=I; End; WriteLn(' Максимальное значение = ',MAX); { нахождение суммы элементов, расположенных до максимального элемента } S:=0; FOR I:=1 TO IND-1 DO S:=S+B[I]; WriteLn(' Cумма элементов, расположенных до максимального элемента =',S); END. Задача 3. Дан массив A, состоящий из N элементов. Элементы массива - произвольные целые числа. Заменить нулями все элементы массива, расположенные за минимальным элементом массива. Измененный массив вывести на экран. USES Crt; CONST N=15; VAR A:ARRAY[0..N] OF INTEGER; I,IND: BYTE; MIN:INTEGER; BEGIN ClrScr; Randomize; WriteLn(' Значения элементов массива'); FOR I:=1 TO N DO Begin A[I]:=Random(400); Write(A[I]:4); End; WriteLn; MIN:=A[1]; IND:=1; { нахождение минимального значения и его индекса } FOR I:=2 TO N DO IF A[I]<MIN THEN Begin MIN:=A[I]; IND:=I; End; WriteLn(' Минимальное значение = ',MIN); { замена нулями элементов, расположенных за минимальным значением } FOR I:=IND+1 TO N DO A[I]:=0; WriteLn(' Измененный массив'); FOR I:=1 TO N DO Write(A[I]:4); END. Задача 4. Дан массив A, состоящий из N элементов. Элементы массива - произвольные целые числа. Заменить нулями все элементы массива, расположенные между минимальным и максимальным элементами массива, кроме их самих. Измененный массив вывести на экран. USES Crt; CONST N=15; VAR A:ARRAY[0..N] OF INTEGER; I, IMIN, IMAX, k1, k2: BYTE; MIN, MAX:INTEGER; BEGIN ClrScr; Randomize; WriteLn(' Значения элементов массива'); FOR I:=1 TO N DO Begin A[I]:=Random(270); Write(A[I]:4); end; WriteLn; MIN:=A[1]; MAX:=A[1]; IMIN:=1; IMAX:=1; { нахождение минимального и максимального значения и их индексов } FOR I:=2 TO N DO Begin 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); WriteLn(' Максимальное значение = ',MAX); { замена нулями элементов, расположенных между минимальным и максимальным значением } IF IMIN<IMAX THEN Begin K1:=IMIN+1; K2:=IMAX-1; End ELSE Begin K1:=IMAX+1; K2:=IMIN-1; End; FOR I:=K1 TO K2 DO A[I]:=0; WriteLn(' Измененный массив'); FOR I:=1 TO N DO Write(A[I]:4); END. Задача 5. Дан массив чисел. Найти наибольший элемент, поставить его первым. USES Crt; CONST M=100; VAR MAS: ARRAY[1..100] OF INTEGER; I,K,N,NEW: INTEGER; BEGIN ClrScr; Write(' Введите размер массива N= '); ReadLn(N); { Заполнение массива с клавиатуры } FOR I:=1 TO N DO Begin Write(' Введите ',I,' элемент массива '); ReadLn(MAS[I]); End; NEW:=MAS[N]; K:=N; { Нахождение наибольшего элемента и его индекса } FOR I:=N DOWNTO 1 DO IF MAS[I]>NEW THEN Begin NEW:=MAS[I]; K:=I; End; { Перестановка местами первого и наибольшего элементов } MAS[K]:=MAS[1]; MAS[1]:=NEW; WriteLn(' Измененный массив'); FOR I:=1 TO N DO Write(MAS[I]:4); END. Задача 6. Известны данные о среднемесячной температуре за год. Определить, какая была самая высокая температура летом и самая низкая зимой. USES Crt; VAR MAS: ARRAY[1..12] OF REAL; I: INTEGER; MIN,MAX:REAL; BEGIN ClrScr; { Заполнение массива с клавиатуры } FOR I:=1 TO 12 DO Begin Write(' Введите среднюю температуру за ',I,' месяц '); ReadLn(MAS[I]); End; MAX:=MAS[6]; MIN:=MAS[12]; { Определение самой высокой температуры летом } FOR I:=7 TO 8 DO IF MAX<MAS[I] THEN MAX:=MAS[I]; { Определение самой низкой температуры зимой } FOR I:=1 TO 2 DO IF MIN>MAS[I] THEN MIN:=MAS[I]; WriteLn(' Самая высокая температура летом ',MAX); WriteLn(' Самая низкая температура зимой ',MIN); END. ..................................................................................................................................... Практические задания ..................................................................................................................................... 1. Дан массив чисел. Найти значение максимального элемента. Если таких элементов несколько, то определить, сколько их. 2. Дан массив чисел. Найти среднее арифметическое максимального и минимального элемента. Вывести значения и индексы этих элементов. 3. Дан массив чисел. Определить количество элементов, находящихся в интервале от1 до 12 и расположенных до максимального элемента массива.
|