Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

{3 - если A[i] не <0}

if not(A[i]<0) then

begin

Inc(k); {увеличиваем значение k на 1}

A[k]:=A[i]; {переписываем i-ый элемент в позицию k}

end;

{4 - в массиве оставляем k элементов}

n:=k;

Пример прогона алгоритма:

Исходный массив: -1 -2 2 -3 -4 3

Состояния массива после просмотра очередного элемента

массива:

0: k=0, i=1, n=6: -1 -2 2 -3 -4 3 {не переписываем}

1: k=0, i=2, n=6; -1 -2 2 -3 -4 3 {не переписываем}

2: k=1, i=3, n=6; 2 -2 2 -3 -4 3 {переписываем

a[1]:=a[3]}

3: k=1, i=4, n=6; 2 -2 2 -3 -4 3 {не переписываем}

4: k=1, i=5, n=6; 2 -2 2 -3 -4 3 {не переписываем}

5: k=2, i=6, n=6; 2 3 2 -3 -4 3 {переписываем

a[2]:=a[6]}

6: k=2, i=7, n=6: 2 3 2 -3 -4 3 {выход из цикла}

7: n=2: 2 3 {значение k переписываем в n}

Обработка нескольких массивов

Задача 14: Массивы А и В имеют одинаковую длину. Массив С

необходимо заполнить суммами соответствующих элементов

массивов А и В. n - длина массивов А и В (и С тоже).

Фрагмент программы:

{проходим по всем элементам массивов}

for i:=1 to n do

{сумму i-ых элементов массивов A и B заносим в i-ый элемент C}

C[i]:=A[i]+B[i];

Задача 15: В конец массива А[n] приписать все элементы массива

В[m].

Фрагмент программы:

{проходим в цикле по массиву B}

for i:=1 to m do

A[n+i]:=B[i]; {дописываем элементы в хвост A}

Inc(n, m); {увеличиваем значение n (длину массива A) на

m (длину массива B)}

Замечание: Необходимо следить, чтобы n не превысило значение

maxN.

Например, так:

if n+m>maxN

then writeln('В массив А все элементы массива В не поместятся')

НЕ нашли? Не то? Что вы ищете?

else... {а вот здесь выполняем добавление элементов}

Задача 16: Сформировать массив В из отрицательных элементов

массива А. Массив А не изменять.

Фрагмент программы:

m:=0; {m - количество элементов в массиве В -

вначале массив B пустой}

{проходим по всем элементам массива A}

for i:=1 to n do

if A[i]<0 then {если i-ый элемент массива A отрицательный}

begin

{то копируем его в массив B}

Inc(m); {в B добавляется еще один элемент -

увеличиваем m на 1}

B[m]:=A[i]; {копируем i-ый элемент массива A

в m-ый элемент массива B}

end;

Задача 17: Подсчитать, сколько элементов массива А совпадают

с элементами массива В.

Алгоритм программы:

1. Ввести массив А[n].

2. Ввести массив В[m] .

3. Счетчик совпадений cnt обнулить.

4. Пройти по всем элементам массива A.

5. Сравнить i-ый элемент массива А со всеми элементами

массива В.

6. Если А[i] совпадает хотя бы с одним элементом массива B,

то счетчик повторений увеличить на 1.

7. Вывести количество совпадений.

Текст программы:

{Подсчитать, сколько элементов массива А совпадают с элементами

массива В}

Program TwoArrayExample;

Const

maxN = 20; {максимальное количество элементов массива}

Type

IndexEl = 1 .. maxN; {индексы массива лежат в интервале

от 1 до maxN}

arrInt = array[IndexEl] of integer; {массив целых чисел,

содержащий до maxN элементов}

Var

a, b:arrInt; {массивы A и B}

n:integer;{количество элементов массива A}

m:integer;{количество элементов массива B}

i, j:IndexEl; {переменные для сканирования массивов}

cnt: integer; {количество совпадений элементов A с элементами B}

k: integer; {количество совпадений элемента A[i] с элементами B}

Begin

{1 - ввод массива A}

{ ввод количества элементов}

repeat

write('Введите n:');

readln(n);

until (n>=1) and (n<=maxN); {выйдем из цикла лишь тогда, когда

n будет принадлежать интервалу [1..maxN]}

{ ввод элементов массива A поодиночке}

for i:=1 to n do

begin

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

readln(a[i]);

end;

{2 - ввод массива B}

{ ввод количества элементов}

repeat

write('Введите m:');

readln(m);

until (m>=1) and (m<=maxN);

{ ввод элементов массива B поодиночке}

for i:=1 to m do

begin

write('b[',i,']');

readln(b[i]);

end;

{3 - счетчик повторений обнуляем}

cnt:=0;

{4 - проходим по всем элементам массива A}

for i:=1 to n do

begin

{5 - сравниваем i-ый элемент массива А со всеми

элементами массива В}

k:=0; {k - количество совпадений i-го элемента массива A

с элементами массива В}

{считаем количество совпадений A[i] с элементами массива B}

for j=1 to m do

if A[i]=B[j] then Inc(k);

{6 - если А[i] совпадает хотя бы с одним элементом массива B,

счетчик повторений увеличить на 1}

if k>0 then Inc(cnt);

end;

{7 - выводим количество повторений}

writeln('Количество совпадений cnt=',cnt);

readln; {ждем нажатия клавиши Enter}

End.

Проверка соседних элементов массива

Задача 18: Подсчитать, сколько в массиве элементов, равных 0,

справа и слева от которых стоят отрицательные элементы.

Фрагмент программы:

k:=0; {количество таких элементов}

{проходим по всем элементам массива A}

{начинаем не с первого, а со второго, потому что у первого элемента

нет стоящего слева от него}

{заканчиваем на n-1 элементе, а не на n, потому что у последнего

n-го элемента нет элемента, стоящего от него справа}

for i:=2 to n-1 do

{если i-ый элемент равен 0 и элемент слева от него и

элемент справа от него отрицательные}

if (A[i]=0) and (A[i-1]<0) and (A[i+1]<0)

then Inc(k); {тогда увеличиваем счетчик}

Задача 19: Найти номер первого элемента массива, который

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

Фрагмент программы:

k:=0; {k - номер искомого элемента}

i:=2; {начинаем со второго элемента}

while (i<=n-1) and (k=0) do {пока не нашли искомый элемент

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5