К лекции 4 массивы Примеры обработки массивов
.docПримеры обработки массивов
1). Найти сумму и среднеарифметическое значение элементов массива A(10).
n:=10;
S:= 0;
for i:=1 to n do
S:= S + a[i];
Sr:=S/n;
writeln(‘S=’, S, ‘ Sr=’, Sr);
2). Найти произведение и среднегеометрическое значение элементов массива A(10).
n:=10;
P:= 1;
for i:=1 to n do
P:= P * a[i];
SrG:=exp(ln(P)/n);
writeln(‘P=’, P:5:2, ‘ SrG=’, SrG:5:2);
3). Сложение двух векторов A(5) и B(5).
for i:=1 to 5 do
d[i]:= a[i] + b[i];
writeln(‘ массив D = A + B‘);
for i:=1 to 5 do
writeln(d[i]);
5). Задана последовательность целых чисел А={1, 2, -7, -4, 5, 3}. Сформировать из неё массив Y, состоящий из элементов массива А кратных 3, имеющих нечетные индексы.
Begin
k:= 0; { счетчик элементов массива Y}
for i:=1 to 6 do
if (a[i] mod 3 = 0) and (i mod 2=1) then
begin
k:= k + 1;
y[k]:= a[i]
end;
If k = 0 Then
writeln(‘нет таких элементов’)
Else
for i:= 1 to k do
writeln( y[i]:5 );
End.
6). Определить количество отрицательных элементов, имеющих четные индексы, в массиве X и распечатать их.
Program lab5;
Type mass=array[1..7] of integer;
const X:mass=(12, 31, 7, 64, 18, 22, 16);
var
y:mass;
i,k:integer;
Begin
writeln('Massiv X:');
for i:=1 to 7 do
write(' ',x[i]);
writeln;
k:=0;
for i:=1 to 7 do
if (x[i] < 0) and (i mod 2=0) then
begin
k:=k+1;
y[k]:=x[i]
end ;
if k=0 then writeln('нет таких элементов')
else
for i:=1 to k do
writeln('y[',i,']=',y[i]:5);
end.
Аналогично определяется количество нечетных, отрицательных, нулевых и т.д. элементов
7). Определить, является ли нечетным целое число N.
1 способ:
If ODD(N) then writeln(‘нечетное’)
else writeln(‘четное’);
2 способ:
If N mod 2<>0 then writeln(‘нечетное’)
else writeln(‘четное’);
8). Задана последовательность X = (x1, x2, , x10).
Сформировать из неё одномерный массив Y, каждый элемент которого определяется по правилу
Полученный массив напечатать в строчку.
for i:=1 to 10 do
if i mod 2= 1 then
y[i]:= x[i]/i+2
else
y[i]:= x[i]*(i+1);
for i:= 1 to 10 do
writeln( y[i]:5:2 );
9). Если элемент массива принадлежит интервалу [n, m], то обнулить его.
for j:= 1 to 10 do
if (a[j] >= n) AND (a[j]<=m)
then a[j]:=0;
10). Если элемент массива не принадлежит интервалу [n, m], то увеличить на единицу все его элементы.
for j:= 1 to 10 do
if (a[j]< n) OR (a[j]>m) then a[j]:=a[j]+1;
11). Найти максимальный и минимальный элементы массива и поменять их местами.
{ найдем max и его индекс }
max:= a[1]; p:=1; { p – индекс max}
for i:= 2 to 5 do
if max < a[i] then
begin
max:=a[i]; p:=i;
end;
{ найдем min и его индекс }
min:= a[1]; q:=1; { q – индекс min}
for i:= 2 to 5 do
if min > a[i] then
begin
min:=a[i]; q:=i;
end;
{ поменяем местами max и min }
buf:= a[p];
a[p]:=a[q];
a[q]:=buf;
12). Найти сумму элементов массива, начиная с первого отрицательного.
(2, 3, -5, 7, -8, 9, 13, 4, -6, 18)
1-й вариант:
for i:= 10 downto 1 do
if a[i]< 0 then n:=i ; { 0>a[i]}
S:=0; {n–номер первого отр. эл-та}
for i:= n to 10 do
S:=S + a[i];
13). Найти сумму и произведение элементов массива, начиная с первого элемента и до последнего отрицательного элемента включительно.
(2, -3, -5, 7, -8, 6, 9, 4)
1-й вариант:
for i:= 1 to 8 do
if a[i]< 0 then n:=i ; {n–номер посл. отр. эл-та}
S:=0;
for i:= 1 to n do
S:=S + a[i];
P:=1;
for i:= 1 to n do
P:=P* a[i];
14). Поменять местами первый и последний отрицательные элементы массива.
(2, -3, -5, 7, -8, 6, 9, 4)
for i:= 8 downto 1 do
if a[i]< 0 then n:=i ; {n–номер первого отр. эл-та}
for i:= 1 to 8 do
if a[i]< 0 then m:=i ; {m–номер посл. отр. эл-та}
{ поменяем местами первый и последний отр. элементы }
buf:= a[n];
a[n]:=a[m];
a[m]:=buf;