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.