Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

К лекции 4 массивы Примеры обработки массивов

.doc
Скачиваний:
15
Добавлен:
25.03.2015
Размер:
58.88 Кб
Скачать

Примеры обработки массивов

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;

9