Обработка массивов
Одномерные массивы Алгоритмы поиска и присвоения значений элементам массива Задача 1. Составить программу обработки массива размерностью n, заполненного целыми числами, введенными с клавиатуры. Вывести индексы и значения положительных элементов массива. USES Crt; CONST N=10; VAR A:ARRAY[0..N] OF INTEGER; I:BYTE; BEGIN ClrScr; { Заполнение массива } FOR I:=1 TO N DO Begin Write('Введите ',I,' элемент массива '); ReadLn(A[I]); End; { Обработка элементов массива } FOR I:=1 TO N DO IF A[I]>0 THEN WriteLn('Положительный элемент = ',A[I],' его индекс = ',I); END. Задача 2. Составить программу обработки массива K, состоящего из 20 элементов. Заполнить массив случайными числами в диапазоне от -5 до 25. Все элементы массива К, значения которых находятся в интервале от -2 до 20 возвести в квадрат. Измененный массив вывести на экран. USES Crt; VAR K:ARRAY[0..20] OF INTEGER; I:BYTE; BEGIN ClrScr; Randomize; { Заполнение массива случайными числами } FOR I:=1 TO 20 DO Begin K[I]:=Random(30)-5; Write(K[I]:3); End; WriteLn; FOR I:=1 TO 20 DO IF (K[I]<20) AND (K[I]>-2) THEN K[I]:=K[I]*K[I]; WriteLn('Измененный массив'); FOR I:=1 TO 20 DO Write(K[I]:4); END. Задача 3. Составить программу вычисления и печати значений функции Y=sin(x-1)/2x. Значения аргументов задать в массиве X, состоящего из 6 элементов. Значения функции записать в массив Y. USES Crt; VAR X,Y:ARRAY[0..6] OF REAL; I: BYTE; BEGIN ClrScr; FOR I:=1 TO 6 DO Begin Write('Введите ',I,' значение аргумента '); ReadLn(X[I]); End; FOR I:=1 TO 6 DO Begin Y[I]:=SIN(X[I]-1)/(2*X[I]); WriteLn(' X= ',X[I]:4:1,' Y=',Y[I]:5:2); End; END. Задача 4. Дан массив M, состоящий из 30 элементов. Элементы массива - произвольные целые числа. Выдать на экран значение каждого пятого и положительного элемента. Указанные элементы выдать в строку. USES Crt; VAR M:ARRAY[0..30] OF INTEGER; I: BYTE; BEGIN ClrScr; Randomize; WriteLn(' Значения элементов массива'); FOR I:=1 TO 30 DO Begin M[I]:=Random(20)-4; Write(M[I]:3); End; WriteLn; I:=5; WriteLn(' Значения каждого пятого и положительного элемента массива'); While I<=30 DO Begin IF M[I] > 0 THEN Write(M[I]:3); I:=I+5; End; END. Задача 5. Из элементов массива Р сформировать массив М той же размерности по правилу: если номер четный, то М[I]=I*P[I],если нечетный, то M[I]=-P[I]. USES Crt; CONST N=15; VAR P, M: ARRAY[0..N] OF INTEGER; I: BYTE; BEGIN ClrScr; Randomize; WriteLn(' Значения элементов массива '); FOR I:=1 TO N DO Begin P[I]:=Random(70); Write(P[I]:3); End; WriteLn; WriteLn(' Значения элементов сформированного массива M'); FOR I:=1 TO N DO Begin IF I mod 2 =0 Then M[I]:=P[I]*I Else M[I]:=-P[I]; Write(M[I]:4); End; END. ..................................................................................................................................... Практические задания ..................................................................................................................................... 1. Дан одномерный массив размерностью 10, заполненный целыми числами, введенными с клавиатуры, и величина N. Отрицательные элементы заменить на N. Измененный массив вывести на экран одной строкой. 2. Дан одномерный массив размерностью N, заполненный случайными числами в интервале от -15 до 20. Вывести на экран значения элементов массива, абсолютное значение которых >10. 3. Дан одномерный массив размерностью N, заполненный случайными числами. Каждый третий элемент массива возвести в квадрат, если элемент отрицательный. Измененный массив вывести на экран. 4. Составить программу вычисления и печати значений функции Y=(sinx+1)Öcos4x. Значения аргументов задать в массиве X, состоящего из 10 элементов. Значения функции записать в массив Y. 5. Заменить первые К элементов массива на противоположные по знаку. 6. Из элементов массива А, состоящего из 25 элементов, сформировать массив D той же размерности по правилу: первые 10 элементов находятся по формуле Di=Ai+i, остальные - по формуле Di=Ai-i.
Алгоритмы нахождения суммы, произведения и количества элементов массива. Работа с индексами элементов массива Задача 1. Определить сумму элементов массива Р(n), значения которых > заданного Т USES Crt; CONST N=30; VAR P:ARRAY[0..N] OF INTEGER; I,T:BYTE; S:INTEGER; BEGIN ClrScr; Randomize; { Заполнение массива случайными числами } WriteLn(' Значения элементов массива'); FOR I:=1 TO N DO Begin P[I]:=Random(30); Write(P[I]:3); End; WriteLn; Write(' Введите значение переменной '); ReadLn(T); S:=0; FOR I:=1 TO N DO IF P[I]>T THEN S:=S+P[I]; { сумма элементов массива > T } WriteLn(' Сумма элементов массива > заданного значения = ',S); END. Задача 2. Дан массив целых чисел, состоящий из 25 элементов. Подсчитать сумму элементов массива, произведение положительных и количество нулевых элементов. Результат вычисления вывести на экран. USES Crt; VAR A:ARRAY[0..25] OF INTEGER; I: BYTE; S,K: INTEGER; P: REAL; BEGIN ClrScr; Randomize; { Заполнение массива случайными числами } WriteLn(' Значения элементов массива'); FOR I:=1 TO 25 DO Begin A[I]:=Random(10)-3; Write(A[I]:3); End; WriteLn; S:=0; K:=0; P:=1; FOR I:=1 TO 25 DO Begin S:=S+A[I]; { сумма элементов массива } IF A[I]>0 THEN P:=P*A[I]; { произведение положительных элементов массива } IF A[I]=0 THEN K:=K+1; { количество нулевых элементов массива } End; WriteLn(' Сумма элементов массива = ',S); WriteLn(' Произведение положительных элементов массива = ',P:0:0); WriteLn(' Количество нулевых элементов массива = ',K); END. Задача 3. Дан массив четных чисел, состоящий из 15 элементов. Заполнить его с клавиатуры. Найти: · сумму элементов, имеющих нечетные индексы; · подсчитать количество элементов массива, значения которых больше заданного числа T и кратны 5; · номер первого отрицательного элемента, делящегося на 5 с остатком 2. USES Crt; CONST T=11; VAR A:ARRAY[0..15] OF INTEGER; I,NP,FL: BYTE; S,K: INTEGER; BEGIN ClrScr; Randomize; { Заполнение массива с клавиатуры } FOR I:=1 TO 15 DO Begin Write('Введите ',I,' злемент массива '); ReadLn(A[I]); End; WriteLn; S:=0; K:=0; FL:=0; FOR I:=1 TO 15 DO Begin IF I mod 2 =0 THEN S:=S+A[I]; { сумма элементов, имеющих четные индексы } IF (A[I]>T) AND (A[I] mod 5 =0) THEN K:=K+1; { количество } IF (A[I]<0) AND (A[I] mod 5 =-2) AND (FL=0) THEN Begin NP:=I; FL:=1; End; End; WriteLn(' Сумма элементов,имеющих четные индексы = ',S); WriteLn(' Количество элементов, значения которых > ',T,' и кратны 5 = ',K); WriteLn(' Номер первого отрицательного элемента, делящегося на 5 с остатком 2 = ',NP); END. Задача 4. Дан массив четных чисел, состоящий из 10 элементов. Заполнить его с клавиатуры. Найти: · сумму положительных элементов, значения которых меньше 10; · вывести индексы тех элементов, значения которых кратны 5 и 3; · количество пар соседних элементов с суммой равной заданному числу. USES Crt; CONST T=21; VAR A:ARRAY[0..10] OF INTEGER; I: BYTE; S,K: INTEGER; BEGIN ClrScr; Randomize; { Заполнение массива с клавиатуры } FOR I:=1 TO 10 DO Begin Write('Введите ',I,' злемент массива '); ReadLn(A[I]); End; WriteLn; S:=0; K:=0; WriteLn(' Индексы элементов, значения которых кратны 3 и 5'); FOR I:=1 TO 10 DO Begin IF (A[I]>0) AND (A[I]<10) THEN S:=S+A[I]; IF (A[I] mod 3 =0) AND (A[I] mod 5 =0) THEN Write(I:3); IF I<>10 THEN IF A[I]+A[I+1]=T THEN K:=K+1; End; WriteLn; WriteLn(' Сумма положительных элементов, значения которых < 10 = ',S); WriteLn(' Количество пар соседних элементов с суммой равной ',T,' = ',K); END. Задача 5. Дан массив целых чисел, состоящий из 10 элементов. Заполнить его с клавиатуры. Найти: · удвоенную сумму положительных элементов; · вывести индексы тех элементов, значения которых больше значения предыдущего элемента (начиная со второго); · количество пар соседних элементов с одинаковыми знаками. USES Crt; VAR A:ARRAY[0..10] OF INTEGER; I: BYTE; S,K: INTEGER; BEGIN ClrScr; Randomize; { Заполнение массива с клавиатуры } FOR I:=1 TO 10 DO Begin Write('Введите ',I,' злемент массива '); ReadLn(A[I]); End; WriteLn; S:=0; K:=0; WriteLn(' Индексы элементов, значения которых > значения предыдущего элемента'); FOR I:=1 TO 10 DO Begin IF (A[I]>0) THEN S:=S+A[I]; IF I<>1 THEN IF A[I] > A[I-1] THEN Write(I:3); IF I<>10 THEN IF (A[I] * A[I+1])>0 THEN K:=K+1; End; WriteLn; WriteLn(' Удвоенная сумма положительных элементов = ',S*2); WriteLn(' Количество пар соседних элементов с одинаковыми знаками = ',K); END. Задача 6. Дан массив C, состоящий из N элементов. Элементы массива - произвольные целые числа. Вывести на экран элементы массива в обратном порядке. USES Crt; CONST N=20; VAR C:ARRAY[0..N] OF INTEGER; I: BYTE; BEGIN ClrScr; Randomize; WriteLn(' Значения элементов массива'); FOR I:=1 TO N DO Begin C[I]:=Random(20); Write(C[I]:3); End; WriteLn; WriteLn(' Значения элементов массива в обратном порядке'); FOR I:=N DOWNTO 1 DO Write(C[I]:3); END. Задача 7. Дан массив A, состоящий из N элементов. Элементы массива - произвольные целые числа. Распечатать элементы в две строки: в первой строке элементы с нечетными индексами, а во второй - элементы с четными индексами. USES Crt; CONST N=25; VAR A:ARRAY[0..N] OF INTEGER; I: BYTE; BEGIN ClrScr; Randomize; WriteLn(' Значения элементов массива'); FOR I:=1 TO N DO Begin A[I]:=Random(20); Write(A[I]:3); end; WriteLn; I:=1; WriteLn(' Элементы с нечетными индексами'); WHILE I<=N DO Begin Write(A[I]:3); I:=I+2; End; WriteLn; I:=2; WriteLn(' Элементы с четными индексами'); WHILE I<=N DO Begin Write(A[I]:3); I:=I+2; End; END.
..................................................................................................................................... Практические задания ..................................................................................................................................... 1. Дан массив целых чисел, состоящий из 10 элементов. Заполнить его с клавиатуры. Найти: · сумму отрицательных элементов; · количество тех элементов, значения которых положительны и не превосходят заданного числа А; · номер последней пары соседних элементов с разными знаками. 2. Дан массив целых чисел, состоящий из 10 элементов. Заполнить его с клавиатуры. Найти: · сумму элементов, имеющих нечетное значение; · вывести индексы тех элементов, значения которых больше заданного числа А; · количество положительных элементов, кратных К. (К вводится с клавиатуры). 3. Дан массив целых чисел, состоящий из N элементов. Определить среднее арифметическое положительных элементов. 4. Дан массив чисел. Найти, сколько в нем пар одинаковых соседних элементов. 5. Оценки, полученные учащимися за урок, занесены в массив. Подсчитать количество «5» и «2», полученных учащимися за урок и средний балл. 6. В очереди за билетами стоят мужчины и женщины. Какое количество мужчин стоит в начале очереди до первой женщины.
|