Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Алгоритмы нахождения наибольшего или наименьшего элемента массива и его индекса
Задача 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 и расположенных до максимального элемента массива.
Алгоритмы удаления, вставки и перестановки элементов Задача 1. Дан массив A, состоящий из 12 элементов. Элементы массива - произвольные целые числа. Поменять местами значения 1 и 2 элементов, 3 и 4 и т.д. Измененный массив вывести на экран. USES Crt; VAR A: ARRAY[0..12] OF INTEGER; I: BYTE; PP: INTEGER; BEGIN ClrScr; Randomize; WriteLn(' Значения элементов массива'); FOR I: =1 TO 12 DO Begin A[I]: =Random(20); Write(A[I]: 3); End; WriteLn; I: =1; WHILE I< =12 DO Begin {перестановка элементов местами, используя промежуточную переменную PP } PP: =A[I]; A[I]: =A[I+1]; A[I+1]: =PP; I: =I+2; End; WriteLn(' Значения элементов измененного массива'); FOR I: =1 TO 12 DO Write(A[I]: 3); END. Задача 2. Дан массив целых чисел из 15 элементов, заполненный случайным образом числами из промежутка [-20, 50]. 1. Удалить из него все элементы, в записи которых есть цифра 5. 2. Вставить число K после всех элементов, кратных своему номеру (К вводится с клавиатуры). 3. Поменять местами первый положительный и последний отрицательный элементы.} USES Crt; VAR P, P1: ARRAY[0..15] OF INTEGER; P2: ARRAY[0..30] OF INTEGER; I, J, E, D, PP, PO, FL: BYTE; K, PRP: INTEGER; BEGIN ClrScr; Randomize; WriteLn(' Значения элементов массива P'); FOR I: =1 TO 15 DO Begin P[I]: =Random(70)-20; Write(P[I]: 4); End; WriteLn; J: =1; { 1. Удаление } FOR I: =1 TO 15 DO Begin E: =ABS(P[I]) mod 10; {Выделение единиц} D: =ABS(P[I]) div 10; {Выделение десятков} { формирование нового массива } IF (E< > 5) AND (D< > 5) THEN Begin P1[J]: =P[I]; J: =J+1; End; End; WriteLn(' Массив, в котором нет элементов с цифрой 5'); FOR I: =1 TO J-1 DO Write(P1[I]: 4); WriteLn; { 2. Вставка } Write(' Введите значение переменной '); ReadLn(K); J: =1; FOR I: =1 TO 15 DO Begin P2[J]: =P[I]; J: =J+1; IF ABS(P[I]) mod I = 0 THEN Begin P2[J]: =K; J: =J+1; End; End; WriteLn(' Массив, в котором после элементов, кратных своему номеру, вставлено число =', K); For I: =1 TO J-1 DO Write(P2[I]: 4); WriteLn; { 3. Перестановка } { Нахождение первого положительного и последнего отрицательного элемента } FL: =0; FOR I: =1 TO 15 DO Begin IF (P[I]> 0) AND (FL=0) THEN Begin PP: =I; FL: =1; End; IF P[I]< 0 THEN PO: =I; End; { перестановка местами первого положительного и последнего отрицательного'} PRP: =P[PP]; P[PP]: =P[PO]; P[PO]: =PRP; WriteLn(' Массив, в котором первый положительный и последний отрицательный'); WriteLn(' поменяли местами'); FOR I: =1 TO 15 DO Write(P[I]: 4); END. ..................................................................................................................................... Практические задания ..................................................................................................................................... Дан массив целых чисел из 10 элементов, заполненный случайным образом из промежутка [-40, 30]. 1. Удалить из него все элементы, которые состоят из одинаковых цифр ( включая однозначные числа). 2. Вставить число К перед всеми элементами, в которых есть цифра 1 (К вводится с клавиатуры) 3. Переставить первые три и последние три элемента местами, сохраняя порядок их следования. Алгоритмы сортировки числового массива Задача 1. Отсортировать числовой массив. Первый способ. USES Crt; CONST N=30; VAR A: ARRAY[0..N] OF INTEGER; I, J: BYTE; PP: INTEGER; BEGIN ClrScr; Randomize; WriteLn(' Значения элементов массива '); FOR I: =1 TO N DO Begin A[I]: =Random(50); Write(A[I]: 4); End; WriteLn; { Сортировка массива } FOR I: =2 TO N DO FOR J: =N DOWNTO I DO IF A[J-1]> A[J] THEN Begin PP: =A[J]; A[J]: =A[J-1]; A[J-1]: =PP; End; WriteLn(' Отсортированный массив '); FOR I: =1 TO N DO Write(A[I]: 4); END. Задача 2. Отсортировать числовой массив. Второй способ. USES Crt; CONST N=30; VAR A: ARRAY[0..N] OF INTEGER; I, J: BYTE; PP: INTEGER; BEGIN ClrScr; Randomize; WriteLn(' Значения элементов массива '); FOR I: =1 TO N DO Begin A[I]: =Random(50); Write(A[I]: 4); End; WriteLn; { Сортировка массива } FOR I: =1 TO N-1 DO FOR J: =I+1 TO N DO IF A[I]> A[J] THEN Begin PP: =A[I]; A[I]: =A[J]; A[J]: =PP; End; WriteLn(' Отсортированный массив '); FOR I: =1 TO N DO Write(A[I]: 4); END. ..................................................................................................................................... Практические задания ..................................................................................................................................... Даны два упорядоченных массива целых чисел М1 и М2. Слить их в упорядоченный массив. Рассмотреть случаи, когда массивы М1 и М2 упорядочены одинаково и когда по-разному. Двумерные массивы Популярное:
|
Последнее изменение этой страницы: 2016-05-30; Просмотров: 2286; Нарушение авторского права страницы