Вычисление суммы и произведения элементов массива, удовлетворяющих заданному условию.

Задача 1.Дан целочисленный одномерный массив, состоящий из n элементов. Найти сумму и произведение нечетных элементов, кратных 3.

Введем обозначения: n – количество элементов в массиве; А – имя массива; i – индекс элемента массива; Ai – i-й элемент массива A; s – сумма нечетных элементов массива, кратных 3; p – произведение нечетных элементов массива, кратных 3.

Входные данные: n, A.

Выходные данные: s, p.

Первоначально сумма искомых элементов равна нулю: не просуммировано ни одно слагаемое, то есть s:=0. Далее, используя любой оператор цикла, просматриваем весь массив от первого и до последнего элемента. И если при этом элемент массива нечетный и кратен 3, то к уже накопленной сумме добавляется очередное слагаемое, т.е. s:= s + A[i]. Здесь слева и справа от знака присваивания записано имя одной и той же переменной s, именно это обеспечивает постепенное накопление суммы: s справа – уже вычисленное известное значение суммы, s - ее новое, вычисляемое значение.

При просмотре массива можно сразу вычислить и произведение элементов массива, удовлетворяющих заданному условию. Произведение вычисляется с помощью оператора p:=p*A[i]. При этом p справа и p слева имеют разные значения: p справа – уже известное, вычисленное ранее значение произведения, p слева – новое, вычисляемое его значение. Первоначально искомое произведение равно единице, т.е. p:=1.

При решении этой задачи можно использовать любой из видов циклов. Рассмотрим несколько вариантов решения задачи.

Первый способ. Для решения используется цикл с параметром:

Program Primer1_1;

Var A: Array[1..20] Of Integer;

i, n, s, p: Integer;

Begin

Write (‘n=’); Readln (n);

For i:=1 To n Do Readln (A[i]); {ввод массива}

s:= 0; p:=1;

For i:=1 To n Do {обработка массива}

If (A[i] mod 2 <>0) and (A[i] mod 3 = 0) Then

Begin

s:=s+A[i]; p:= p*A[i]

End;

Writeln (‘s=’, s, ‘p=’, p);

Readln

End.

Второй способ. Для решения используется цикл с предусловием:

Program Primer1_2;

Var A: Array[1..20] Of Integer;

i, n, s, p: Integer;

Begin

Write (‘n=’); Readln (n); i:=1;

While i <= n Do

Begin

Readln (A[i]); i:= i + 1

End;

s:= 0; p:=1; i:=1;

While i<=n Do

Begin

If (A[i] mod 2 <>0) and (A[i] mod 3 = 0) Then

Begin

s:=s+A[i]; p:= p*A[i]

End; i:= i + 1

End;

Writeln (‘s=’, s, ‘p=’, p);

Readln

End.

Нахождение количества элементов, удовлетворяющих заданному условию

Задача 2.Дан массив целых чисел. Найти количество тех элементов, значения которых положительны и не превосходят заданного натурального числа А.

Введем обозначения: n – количество элементов в массиве; X – имя массива; i – индекс элемента массива; Xi – i-й элемент массива X; А – заданное число; k – количество элементов, значения которых положительны и не превосходят заданного числа А.

Входные данные: n, X, A.

Выходные данные: k.

Вводим с клавиатуры значение числа А. Количество элементов, значения которых положительны и не превосходят заданного числа А, вначале полагаем равным нулю, то есть k:=0. Если очередной элемент массива положителен и не превосходят заданного числа A, то количество таких элементов нужно увеличить на единицу, то есть k:=k + 1. Таким образом, обрабатываются все элементы массива.

При решении этой задачи можно использовать любой из видов циклов. Рассмотрим несколько вариантов решения задачи.

Первый способ. Для решения используется цикл с параметром:

Program Primer2_1;

Var X: Array[1..20] Of Integer;

i, n, k, A: Integer;

Begin

Write (‘n=’); Readln (n);

For i:=1 To n Do Readln (X[i]); {ввод массива}

Write (‘A=’); Readln (A); k:= 0;

For i:=1 To n Do {обработка массива}

If (X[i] >0) and (X[i] <= A) Then k:=k + 1;

Writeln (‘k=’, k);

Readln

End.

Второй способ. Для решения используется цикл с постусловием:

Program Primer2_2;

Var X: Array[1..20] Of Integer;

i, n, k, A: Integer;

Begin

Write (‘n=’); Readln (n); i:=1;

Repeat

Read (X[i]); i := i + 1

Until i > n;

Write (‘A=’); Readln (A); k:= 0; i:=1;

Repeat

If (X[i] >0) and (X[i] <= A) Then

k:=k + 1; i := i + 1

Until I > n;

Writeln (‘k=’, k);

Readln

End.

Нахождение номеров элементов, обладающих заданным свойством

Задача 3. Найти номера четных элементов, стоящих на нечетных местах.

Введем обозначения: n – количество элементов в массиве; X – имя массива; i – индекс элемента массива; Xi – i-й элемент массива Х.

Входные данные: n, X.

Выходные данные: i.

Необходимо просмотреть весь массив. Если просматриваемый элемент является четным, а его порядковый номер – нечетный, то вывести его номер. При решении этой задачи можно использовать любой из видов циклов.

Составим программу с помощью цикла с параметром:

Program Primer3_1;

Var X: Array[1..20] Of Integer;

i, n: Integer;

Begin

Write (‘n=’); Readln (n);

For i:=1 To n Do Readln (X[i]); {ввод массива}

For i:=1 To n Do {обработка массива}

If (X[i] mod 2 = 0) and (i mod 2<>0) Then Write (i:5);

Readln

End.

Наши рекомендации