Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Алгоритмы нахождения наибольшего или наименьшего элемента массива и его индекса
Задача 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 и расположенных до максимального элемента массива.
|