Обработка массивов
Одномерные массивы
Алгоритмы нахождения наибольшего или наименьшего элемента массива и его индекса
Задача 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 до 12 и расположенных до максимального элемента массива.