Обработка одномерных массивов
Рассмотрим типовые задачи обработки одномерных массивов.
Задача.
Составить программу подсчета суммы и произведения элементов одномерного массива вещественных чисел.
Таблица идентификаторов
№ | Наименование переменной | Обозначения в программе |
Имя массива | a | |
Размер массива | n | |
Индекс массива | i | |
Сумма элементов | S | |
Произведение элементов | p |
program mas_1;
uses
crt;
var
a : array [1…100] of real;
n, I : integer;
p, s : real;
begin
clrscr;
{подготовить переменные для суммы и произведения}
s: = 0; p: =1;
writeln ('введите размер массива n<=100');
readln (n);
writeln ('введите элемент массива');
for i:=1 to nk do
readln (a[i] );
for i:=1 to nk do
begin
s:= s + a[ i ];
p:= p * a[ i ];
end;
writeln ('Сумма = ',s:8:3,'Произведение =',p:8:3);
readln;
end.
При накапливании суммы переменную необходимо обнулить, а при накапливании произведения – присвоить 1.
Задача.
Дан массив a(n). Найти максимальный элемент массива и определить его номер.
Таблица идентификаторов
№ | Наименование переменной | Обозначения в программе |
Имя массива | a | |
Размер массива | n | |
Индекс массива | i | |
Максимальный элемент | max | |
Номер максимального элемента | nmax |
program mas_2;
var
a: array [1…100] of real;
i,n,nmax: integer;
max: real;
begin
writeln ('введите размер массива n<=100');
readln (n);
writeln ('введите элементы массива');
for i:=1 to n do
readln (a[ i ] );
{за максимальный принимается первый элемент массива}
max:=a[1]; nmax:=1;
for i:=1 to n do
If a[i]>max then
begin
max:=a[i];
nmax:=i;
end;
writeln ('max =', max, ' N=', nmax);
readln;
end.
Задача.
Задан массив целых чисел. Отсортировать элементы одномерного массива по возрастанию.
Существует много способов сортировки элементов массива
Таблица идентификаторов
№ | Наименование переменной | Обозначения в программе |
Имя массива | a | |
Размер массива | n | |
Индекс массива | i | |
Флажок | flag | |
Дополнительная переменная для обмена местами сосодних элементов | p |
program mas_3;
uses
crt;
var
a: array [1…100] of integer;
f, n, i,p : integer;
begin
clrscr;
writeln ('введите размер массива n<=100');
readln (n);
writeln ('введите элементы массива');
for i:=1 to n do
readln (a[i]);
repeat
f:=0;
for i:=1 to n-1 do
if a[ i ]>a[i+1] then
begin
p: =a[ i ];
a[ i ]:=a[i+1];
a[i+1]:=p; f:=1;
end;
until f=0;
for i:=1 to n do writeln (a[ i ]);
readln;
end.
В данном алгоритме используются вложенные циклы.
Внутренний цикл (for…to…do) – позволяет один раз пройтись по массиву, сравнивая соседние элементы. В случае, если предыдущий элемент (a[ i ]) окажется больше последующего (a[i+1]), элементы меняются местами через дополнительную переменную p.
Внешний цикл(repeat…until) – повторяется до тех пор, пока массив не будет упорядочен.
В программе применяется переменная – флажок.
f =1 – признак того, что два соседних элемента менялись местами, массив еще не упорядочен.
f =0 – признак того, что массив упорядочен.
Дата добавления: 2015-05-21; просмотров: 685;