Задача. Заменить отрицательные элементы на противоположные по знаку.
Для этого опишем процедуру. Ей будем передавать один параметр - массив, который будет результатом ее выполнения, так как некоторые элементы могут быть заменены.
Procedure Zamena (Var m: MyArray; n:integer);
Var
i: integer;
Begin
for i:= 1 to n do
if m[i] < 0
then
m[i]:= -1*m[i];
End;
Нахождение номеров элементов с заданным свойством
Задача. Найти и вывести на экран номера четных элементов.
Для решения задачи необходимо просмотреть весь массив, и если просматриваемый элемент является четным, то выводить его номер. Опишем процедуру, которой передается данный массив и выводятся нужные номера.
Procedure PoiskChet(m: MyArray; n:integer);
Var
i: integer;
Begin
for i:= 1 to n do
if m[i] mod 2 =0
then
Write(i:5);
End;
Нахождение количества элементов с заданным свойством
Задача. Найти количество положительных и отрицательных элементов в данном массиве.
Опишем процедуру, которой будем отправлять три параметра - массив и два счетчика, один для элементов, больших нуля, а второй - для отрицательных элементов.
|
|
Procedure OtrPol(m: MyArray;; n:integer; Var k1,k2: Integer);
Var
i: integer;
Begin
k1:=0;
k2:=0;
for i:= 1 to n do
if m[i] > 0
then
Inc(k1)
Else
if m[i] < 0
then
Inc(k2);
End;
Есть ли в данном массиве элементы с данным свойством?
Для решения таких задач удобнее использовать циклы с условиями и составлять функции, результат которых имеет логический тип.
Задача. Есть ли отрицательный элемент в массиве?
Начинаем с первого элемента (i=1). пока не просмотрен последний элемент (i<=n) и не найден отрицательный (m[i]>=0), будем переходить к следующему (Inc(i)). Таким образом, мы закончим просмотр массива в одном из двух случаев: первый - просмотрели все элементы и не нашли отрицательный, тогда i>n, второй - нашли нужный, при этом i<=n. Опишем функцию, значение которой истина (True), если такой элемент есть, и ложь (False), если его нет.
Function Control (m: MyArray; n:integer): Boolean;
Var
i: integer;
Begin
i:= 1;
while (i<=n) and (m[i]>0) do
Inc(i);
Control:= (i<=n);
End;