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