Нахождение номеров элементов с заданным свойством

Задача. Найти и вывести на экран номера четных элементов.

Для решения задачи необходимо просмотреть весь массив, и если просматриваемый элемент является четным, то выводить его номер..

program PoiskChet;

const

n=20;

Type

Tarray=array[1..n] of integer;

var i:integer;

a:Tarray;

begin

writeln('нахождение номера четного элемента');

writeln('заполнение массива');

randomize;

for i:=1 to n do begin

a [i]:=random(100);

write(a[i]:3, ' ' );

end;

writeln('номер четного элемента');

for i:=1 to n do

if a[i] mod 2 = 0 then

write(i:5);

readln;

end.

Нахождение количества элементов с заданным свойством

Задача. Найти количество положительных и отрицательных элементов в данном массиве.

program kolichestvo;

const

n=20; {}

Type

Tarray=array[1..n] of integer;

var i,k1,k2,j:integer;

a:Tarray;

begin

writeln('подсчет положительных и отрицательных элементов в массиве ');

writeln('заполнение массива');

randomize;

for i:=1 to n do begin

a [i]:=random(10+20)-20;

write(a[i]:3, ' ' );

end;

k1:=0;

k2:=0;

for i:=1 to n do

if a[i] > 0 then inc(k1)

else if a[i]<0 then inc(k2);

writeln('количество положительных элементов');

writeln('k1=',k1);

writeln('количество отрицательных элементов');

writeln('k2=',k2);

readln;

end.

Удаление элементов из одномерного массива.

Задача. Удалить из массива максимальный элемент, если все элементы разные.

Для того, чтобы решить задачу нужно:

· найти номер максимального элемента k;

· сдвинуть все элементы, начиная с k-го, на один элемент влево;

· последнему элементу присвоить значение 0;

· уменьшить количество элементов массива на единицу.

Рассмотрим задачу на конкретном примере. Пусть дан одномерный массив из целых чисел, состоящий из 10 элементов:

6, 3, 4, 7, 11, 2, 13, 8, 1, 5.

Номер максимального элемента равен 7 (k=7), то есть, начиная с 7-го элемента, будем сдвигать элементы на один влево: 7-му присвоим значение 8-го, 8-му присвоим значение 9-го, 9-му присвоим значение 10-го, на этом сдвиг заканчивается. Таким образом, сдвиг начинается с k-го элемента и идет по (n-1)-й (где n - количество элементов в массиве). После этого последнему элементу присвоим значение, равное 0, и тогда массив будет следующим:

6, 3, 4, 7, 11, 2, 8, 1, 5.

Примечание. При удалении элемента размерность массива изменяется.

Составим программу, удаляющую максимальный элемент из одномерного массива. Чтобы последний элемент не выводился, модифицируйте соответствующую процедуру таким образом, чтобы ей передавать не только массив, но и количество элементов, которые надо вывести, начиная с первого.

program udalenie;

const

n=20;

Type

Tarray=array[1..n] of integer;

var i,max,maxi:integer;

a:Tarray;

begin

writeln('Удаление элемента');

writeln('заполнение массива');

randomize;

for i:=1 to n do begin

a [i]:=random(100);

write(a[i]:3, ' ' );

end;

max:=-maxint;

for i:=1 to n do

if a[i]>max then

begin max:=a[i];

maxi:=i;

end;

for i:=maxi to n-1 do

a[i]:=a[i+1];

a[n]:=0;

writeln('номер максимального элемента= ', maxi);

writeln('массив после удаления элемента' );

for i:=1 to n-1 do

write(a[i]:3, ' ' );

readln;

end.

Вставка элементов в одномерный массив. Вставка одного элемента

Вставлять элемент можно до или после данного элемента, номер этого элемента можно вводить с клавиатуры или искать при определенных условиях.

Пусть k - это номер элемента, после которого необходимо вставить элемент х. Тогда вставка осуществляется следующим образом:

· первые k элементов массива остаются без изменения,

· все элементы, начиная с (k+1)-го, необходимо сдвинуть на один назад,

· на место (k+1)-го элемента записываем значение х;

· увеличить количество элементов в массиве на единицу.

Задача. Вставить число после данного элемента массива.

Рассмотрим на конкретном примере. Пусть задан следующий одномерный массив из N (N=10) элементов:

3, -12, 5, 14, 27, -6, 1, -34, 10, -15.

Надо вставить 100 после пятого элемента массива, т. е. должен получиться следующий массив:

3, -12, 5, 14, 27, 100, -6, 1, -34, 10, -15.

Таким образом, в массиве стало 11 элементов, то есть массив надо определять на N+1 элемент:

Кроме того, в программе необходимо выводить массив два раза, сначала первые N элементов массива, а затем все N+1 элементы.

program vstavka;

const

n=20;

Type

Tarray=array[1..n+1] of integer;

var i,k,x:integer;

a:Tarray;

begin

writeln('вставка элемента в массив');

writeln('заполнение массива');

randomize;

for i:=1 to n do begin

a [i]:=random(100);

write(a[i]:3, ' ' );

end;

writeln('введите номер элемента, после которого вставить новый элемент');

readln(k);

writeln('введите число, которое надо вставить');

readln(x);

for i:=n downto k+1 do

a[i+1]:=a[i];

a[k+1]:=x;

writeln('новый массив');

for i:=1 to n+1 do

write(a[i]:3, ' ' );

readln;

end.

Наши рекомендации