
Лабораторная работа № 4. Одномерные массивы
Задание 1. В алгоритме вычисления суммы и количества положительных элементов заполните пустые места.
Блок-схема:
Задание 2. Составьте блок-схему к следующей программе:
Program Example7;
Uses crt;
Var a: array[1..100] of integer;
i, n, max: integer;
Begin
Clrscr;
Write(‘n=’);
Readln(n);
for i:=1 to n do Begin
Write(‘a[’,i,’]=’);
Readln(a[i]);
End;
max:=a[1];
for i:=2 to n do if a[i]>max then max:=a[i];
Writeln(‘max=’,max);
End.
Блок-схема:
Задание 3. Составьте программу, которая находит максимальный и минимальный элементы в одномерном массиве и их порядковые номера.
Листинг программы:
program z43;
Uses crt;
var n,i,max,min,nmax,nmin: integer; a: array[1..100] of integer;
begin
write('n=');
readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i])
end;
max:=a[1]; nmax:=1;
min:=a[1]; nmin:=1;
for i:=2 to n do
begin
if a[i]>max then begin max:=a[i]; nmax:=i end;
if a[i]<min then begin min:=a[i]; nmin:=i end;
end;
writeln('max=',max,' nmax=',nmax);
writeln('min=',min,' nmin=',nmin);
readkey
end.
Протокол выполнения программы:
n=5
a[1]=6
a[2]=2
a[3]=9
a[4]=3
a[5]=7
max=9 nmax=3
min=2 nmin=2
Задача 4. Составьте программу, в которой меняются местами максимальный и минимальный элементы.
Листинг программы:
program z44;
Uses crt;
var n,i,max,min,nmax,nmin: integer; a: array[1..100] of integer;
begin
write('n=');
readln(n);
for i:=1 to n do
begin
write('a[',i,']=');
readln(a[i])
end;
max:=a[1]; nmax:=1;
min:=a[1]; nmin:=1;
for i:=2 to n do
begin
if a[i]>max then begin max:=a[i]; nmax:=i end;
if a[i]<min then begin min:=a[i]; nmin:=i end;
end;
writeln('max=',max,' nmax=',nmax);
writeln('min=',min,' nmin=',nmin);
for i:=1 to n do
begin
if i=nmin then a[i]:=max;
if i=nmax then a[i]:=min;
end;
for i:=1 to n do
write(a[i]:5);
readkey
end.
Протокол выполнения программы:
n=5
a[1]=3
a[2]=8
a[3]=1
a[4]=6
a[5]=9
max=9 nmax=5
min=1 nmin=3
3 8 9 6 1
Задание 5. Установите правильный порядок команд в программе, и определите, что в ней вычисляется.
Листинг программы:
Program Example8;
Uses crt;
Var a,b: array[1..100] of integer;
i,n,k: integer;
Begin
Write('n=');
Readln(n);
for i:=1 to n do Begin
Write('a[',i,']=');
Readln(a[i]);
End;
k:=0;
for i:=1 to n do
if a[i]<0 then Begin
k:=k+1;
b[k]:=i;
End;
for i:=1 to k do Write(b[i]:4);
Readkey
End.
Протокол выполнения программы:
n=5
a[1]=3
a[2]=-7
a[3]=1
a[4]=-2
a[5]=6
4
Программа находит отрицательные числа в одномерном массиве и записывает их порядковые номера в другой массив.
Задание 6. Определите, что выполняется в программе.
Листинг программы:
Program Example9;
Uses crt;
Var a: array[1..100] of integer;
i,j,n,m: integer;
Begin
Clrscr;
Write('n='); Readln(n);
for i:=1 to n do Begin
Write('a[',i,']=');
Readln(a[i]);
End;
for j:=1 to n-1 do
for i:=1 to n-j do Begin
if a[i]<a[i+1] then Begin
m:=a[i];
a[i]:=a[i+1];
a[i+1]:=m
End;
End;
for i:=1 to n do Write(a[i]:4);
Readkey
End.
Протокол выполнения программы:
n=5
a[1]=7
a[2]=3
a[3]=6
a[4]=1
a[5]=8
8 7 6 3 1
Программа сортирует элементы одномерного массива по убыванию.
Задание 7. Составьте программу, которая преобразует одномерный массив таким образом, чтобы сначала шли отрицательные, затем положительные элементы.
Листинг программы:
Program z47;
Uses crt;
Var a: array[1..100] of integer;
i,j,n,m: integer;
Begin
Clrscr;
Write('n='); Readln(n);
for i:=1 to n do Begin
Write('a[',i,']=');
Readln(a[i]);
End;
for j:=1 to n-1 do
for i:=1 to n-j do Begin
if a[i]>a[i+1] then Begin
m:=a[i];
a[i]:=a[i+1];
a[i+1]:=m
End;
End;
for i:=1 to n do Write(a[i]:4);
Readkey
End.
Протокол выполнения программы:
n=5
a[1]=7
a[2]=3
a[3]=6
a[4]=1
a[5]=8
8 7 6 3 1