Изменение значения некоторых элементов

Задача. Заменить отрицательные элементы на противоположные по знаку.

Для этого опишем процедуру. Ей будем передавать один параметр - массив, который будет результатом ее выполнения, так как некоторые элементы могут быть заменены.

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;

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: