Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекция Массивы 1.doc
Скачиваний:
5
Добавлен:
15.07.2019
Размер:
77.31 Кб
Скачать

3. Ввод – вывод одномерных массивов.

Значения элементов одномерного массива ( вектора ) можно ввести в программу следующими способами:

1). типизированной константой;

2). ввод с клавиатуры;

3). ввод из файла;

Значения отдельных элементов массива можно задать оператором присваивания.

Вывод элементов массива и результатов вычислений :

1). на экран;

2). в файл.

Рассмотрим пример ( слайд 11, 12, 13)

Program Vvod;

TYPE mass = array[1..5] of integer;

CONST A: mass = ( 2, -4, 3, -6, 8 );

VAR B: mass;

C: array[1..4] of integer;

i: integer;

BEGIN

{ ввод массива B с клавиатуры }

writeln(‘ введите 5 эл-тов массива B‘);

FOR i := 1 TO 5 DO read(b[i]);

{ ввод массива C с клавиатуры }

writeln(‘ введите 4 эл-та массива С‘);

FOR i := 1 TO 4 DO read(c[i]);

{ вывод массива A на экран }

writeln(‘ массив A:’);

FOR i := 1 TO 5 DO

write(A[i]:5);

writeln; {выводится вектор-строка}

{ вывод массива B на экран }

writeln(‘ массив B:’);

FOR i := 1 TO 5 DO

writeln(B[i]);

{выводится вектор-столбец}

{одновременная печать массивов A и B}

FOR i := 1 TO 5 DO

writeln(‘A[‘ , i , ‘]=’ , A[i]:3 ,‘ B[‘ , i , ‘]=’ ,B[i]:3);

writeln;

end.

На экране будет напечатано:

введите 5 эл-тов массива B

5 6 9 1 12

введите 4 эл-та массива С

0 5 8 2

массив A:

2 -4 3 -6 8

массив B:

5

6

9

1

12

A[1]=2 B[1]=5

A[2]=-4 B[2]=6

A[3]=3 B[3]=9

A[4]=-6 B[4]=1

A[5]=8 B[5]=12

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

Рассмотрим примеры обработки отдельных элементов массива. ( слайд 14,15)

1). Найти сумму элементов массива. ( слайд 16)

S:= 0;

for i:=1 to 5 do

S:= S + a[i];

writeln(‘S=’, S);

2). Сложение двух векторов A и B. ( слайд 17)

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]);

3). Определить количество четных элементов в массиве A и распечатать их.

( слайд 18)

k:= 0; { счетчик }

for i:=1 to 5 do

if a[i] mod 2 = 0 then

begin

k:= k + 1;

y[k]:= a[i]

end;

{распечатка массива четных чисел}

If k = 0 Then

writeln(‘четных нет’)

Else

for i:= 1 to k do

write( y[i]:5 );

writeln;

4). Определить количество положительных элементов в массиве A. ( слайд 19)

k:= 0; { счетчик }

for i:=1 to 5 do

if a[i] > 0 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). Если элемент массива принадлежит интервалу [n, m], то обнулить его.

( слайд 20)

for j:= 1 to 5 do

if (a[j] >= n) AND (a[j]<=m) then a[j]:=0;

6). Если элемент массива не принадлежит интервалу [n, m], то увеличить на единицу все его элементы.

for j:= 1 to 5 do

if (a[j]< n) OR (a[j]>m) then a[j]:=a[j]+1;

7). Найти максимальный и минимальный элементы массива и поменять их местами. ( слайд 21)

{ найдем max и его индекс }

max:= a[1]; n:=1; { n – индекс max}

for i:= 2 to 5 do

if max < a[i] then

begin

max:=a[i]; n:=i;

end;

{ найдем min и его индекс }

min:= a[1]; m:=1; { m – индекс min}

for i:= 2 to 5 do

if min > a[i] then

begin

min:=a[i]; m:=i;

end;

{ поменяем местами max и min }

buf:= a[n];

a[n]:=a[m];

a[m]:=buf;

8). Найти сумму элементов массива, начиная с первого отрицательного.

1-й вариант:

for i:= 1 downto 5 do

if a[i]< 0 then n:=i ; {n–номер отр. эл-та}

S:=0;

for i:= n to 5 do

S:=S = a[i];

2-й вариант:

for i:= 1 to 5 do

if a[i]< 0 then

begin

n:=i ;

goto 1 { или BREAK}

end;

1: S:=0;

for i:= n to 5 do

S:=S = a[i];

9). Определить, содержит ли массив число, равное Z, если да, то в каких позициях.

Program poisk;

Const Z=-20; n=30;

Var a: array[1..n] of integer;

i, k : byte;

Begin

for i:= 1 to n do

read(a[i]); {ввод элементов массива}

k:=0; { счетчик }

for i:= 1 to n do

begin

if a[i] = Z then

begin

k:=k + 1;

write(‘обнаружено ’, k, ‘-е число Z=’, Z);

writeln(‘ в позиции ’, i );

end;

end;

if k < > 0 then

writeln(‘Z= ‘, Z, ‘ встречается ‘, k, ‘ раз’)

else

writeln(‘числа ’,Z, ‘ нет в массиве A‘);

End.

12