Задачи для изучающих программирование самостоятельно 30 Задания на лабораторную работу по теме "Обработка одномерных массивов" 39

Вид материалаДокументы

Содержание


Обработка нескольких массивов
A[n+i]:=B[i]; {дописываем элементы в хвост A}
Const maxN = 20; {максимальное количество элементов массива}
Подобный материал:
1   2   3   4   5   6   7   8   9

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


Задача 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.