Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Обработка нескольких массивов
Задача 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 {пока не нашли искомый элемент и не просмотрели все элементы массива} begin {если элемент тот, что надо, то запоминаем его индекс} if (A[i-1]> 0) and (A[i+1]> 0) then k: =i; Inc(i); {переходим к следующему элементу} end; {выводим позицию искомого элемента} if k=0 then writeln('искомых элементов в массиве нет') else writeln('искомый элемент занимает позицию ', k); Сортировка массива и работа с отсортированным массивом Задача 20: Отсортировать массив по возрастанию. Массив A является отсортированным (упорядоченным) по возрастанию, если для всех i из интервала [1..n-1] выполняется условие A[i]< =A[i+1]. Существует множество методов сортировки, мы же воспользуемся один из самых простых - метод сортировки выбором (поиском минимального). Суть этого метода сортировки заключается в следующем: 1. В массиве находим минимальный элемент. 2. Меняем минимальный элемент с первым. 3. В усеченном (исключая первый элемент) массиве находим минимальный элемент. 4. Ставим 080 аu1077 его на второе место. И так далее n-1 раз. Пример: Массив A, исходное состояние 1 3 0 9 2 Процесс сортировки 0: 1 3 0 9 2 min=a[3]=0 Переставляем a[1]< -> a[3] 1: 0|3 1 9 2 min=a[3]=1 Переставляем a[2]< -> a[3] 2: 0 1|3 9 2 min=a[5]=2 Переставляем a[3]< -> a[5] 3: 0 1 2|9 3 min=a[5]=3 Переставляем a[4]< -> a[5] 4: 0 1 2 3 9 Готово Здесь знак | отделяет уже отсортированную часть массива от еще не отсортированной. На Turbo Pascal этот алгоритм будет выглядеть следующим образом:
Var {дополнительные переменные} buf: integer; {через buf будем менять значения двух элементов массива} imin: IndexEl; {индекс минимального элемента неотсортированной части массива} … Begin … {n-1 раз ищем минимальный элемент массива} for i: =1 to n-1 do begin {Ищем минимальный элемент в несортированной части массива (от i-го элемента)} imin: =i; {imin - это индекс минимального элемента массива} for j: =i+1 to n do if A[j]< A[imin] then imin: =j; {переставляем i-ый и imin-ый элементы} buf: =A[i]; A[i]: =A[imin]; A[imin]: =buf; End; … Задача 21. Вставить в упорядоченный по возрастанию массив новый элемент таким образом, чтобы сохранилась упорядоченность. Алгоритм решения задачи следующий: 1. Ищем в массиве тот элемент, который больше вставляемого, – для этого последовательно просматриваем все элементы, начиная с первого. 2. Увеличиваем длину массива на 1. 3. После этого все элементы, стоящие правее от найденного, включая его самого, сдвигаются вправо. 4. На освободившуюся позицию вставляется искомый элемент. Замечание: если все элементы массива меньше вставлямого, то новый элемент надо вставить в конец массива. Если все элементы массива больше вставляемого, то новый элемент надо вставить в начало массива. Пример: Надо вставить 5 в массив A: 3 4 7 9 1. Ищем элемент, больший вставляемого. Это элемент A[3]=7. 2. Увеличиваем длину массива на 1. Получаем массив A: 3 4 7 9 X 3. Сдвигаем элементы, начиная с 3-го, вправо. Получаем массив A: 3 4 7 7 9 4. В элемент A[3] заносим 5. Получаем массив: 3 4 5 7 9 Фрагмент программы, реализующей данный алгоритм:
… { считываем число, которое надо вставить в массив} read(g); {1. Ищем элемент больше вставляемого } k: =1; {k – индекс сравниваемого элемента} while (k< =n) and (g> =a[k]) do {если k не вышла за границу n, и вставляемый элемент меньше или равен A[k]} k: =k+1; {то переходим к следующему элементу} {2. Увеличиваем длину массива на 1} n: =n+1; {3. Сдвигаем элементы начиная с k-го вправо} for i: =n downto k+1 do a[i]: =a[i-1]; {4. В A[k] заносим g} a[k]: =g; … Варианты заданий Задачи совсем простые
Вариант A1: В массиве все четные элементы обнулить. Пример: из массива A[5]: 1 3 4 5 6 должен получиться массив 1 3 0 5 0
Вариант A2: В массиве все нечетные элементы заменить на 1. Пример: из массива A[5]: 1 3 4 5 6 должен получиться массив 1 1 4 1 6
Вариант A3: В массиве все элементы, стоящие после нечетных, заменить на 0. Пример: из массива A[5]: 1 3 4 5 6 должен получиться массив 1 0 4 5 0
Вариант A4: В массиве все элементы, стоящие перед четными, заменить на 9. Пример: из массива A[5]: 1 3 4 5 6 должен получиться массив 1 9 4 9 6
Вариант A5: В массиве все элементы стоящие между четными заменить на 1. Пример: из массива A[5]: 1 3 4 5 6 должен получиться массив 1 2 4 1 6
Вариант A6: В массиве все элементы, стоящие после минимального, заменить на 0. Пример: из массива A[5]: 3 2 1 5 6 должен получиться массив 3 2 1 0 0
Вариант A7: В массиве все элементы, стоящие перед максимальным, заменить на 0. Пример: из массива A[5]: 3 2 1 5 4 должен получиться массив 0 0 0 5 4
Вариант A8: В массиве все элементы, стоящие после максимального, заменить на 0. Пример: из массива A[5]: 3 2 1 5 4 должен получиться массив 3 2 1 5 0
Вариант A9: В массиве все нечетные элементы, стоящие после максимального, заменить на 0. Пример: из массива A[5]: 3 7 1 5 4 должен получиться массив 3 7 0 0 4
Вариант A10: В массиве все четные элементы, стоящие левее минимального, заменить на 0. Пример: из массива A[5]: 3 2 1 0 4 должен получиться массив 3 0 1 0 4 Задачи простые
Вариант B1 Из массива удалить первый из четных элементов. Пример: из массива A[5]: 1 3 4 5 6 должен получиться массив A[4]: 1 3 5 6
Вариант B2 Из массива удалить последний из четных элементов. Пример: из массива A[5]: 1 3 4 5 6 должен получиться массив A[4]: 1 3 4 5
Вариант B3 Из массива удалить последний из нечетных элементов. Пример: из массива A[5]: 1 3 4 5 6 должен получиться массив A[4]: 1 3 4 6
Вариант B4 Из массива удалить первый из нечетных элементов. Пример: из массива A[5]: 1 3 4 5 6 должен получиться массив A[4]: 3 4 5 6
Вариант B5 После максимального из четных элементов вставить 0. Пример: из массива A[5]: 1 9 8 3 5 должен получиться массив A[6]: 1 9 8 0 3 5
Вариант B6 После первого четного элемента вставить 0. Пример: из массива A[5]: 1 6 8 3 4 должен получиться массив A[6]: 1 6 0 8 3 4
Вариант B7 После последнего нечетного элемента вставить 0. Пример: из массива A[5]: 1 3 8 3 5 должен получиться массив A[6]: 1 3 8 3 5 0
Вариант B8 Удалить максимальный из четных элементов. Пример: из массива A[5]: 2 3 4 7 5 должен получиться массив A[4]: 2 3 7 5
Вариант B9 Удалить максимальный из кратных трем элементов. Пример: из массива A[5]: 2 3 4 7 5 должен получиться массив A[4]: 2 4 7 5
Вариант B10 После последнего кратного четырем элемента вставить 0. Пример: из массива A[5]: 1 3 8 3 4 должен получиться массив A[6]: 1 3 8 3 4 0 Задачи средние
Вариант C1 Из массива удалить четные элементы, стоящие после максимального. Пример: из массива A[5]: 2 7 4 6 5 должен получиться массив A[3]: 2 7 5
Вариант C2 Из массива удалить четные элементы, имеющие значение больше среднего арифметического всех элементов массива. Пример: из массива A[5]: 8 7 2 6 5 должен получиться массив A[3]: 7 2 5 (среднее арифметическое всех элементов =(8+7+2+6+5)/5=5.6)
Вариант C3 Из массива удалить элементы, имеющие значение меньше среднего арифметического четных элементов массива. Пример: из массива A[5]: 8 7 2 6 5 должен получиться массив A[3]: 8 7 6 (среднее арифметическое четных элементов =(8+2+6)/3=5.33)
Вариант C4 Из массива удалить элементы, стоящие после максимального и имеющие значение меньше среднего арифметического всех элементов массива. Пример: из массива A[5]: 8 6 9 4 5 должен получиться массив A[3]: 8 6 9 (среднее арифметическое четных элементов =(8+6+9+4+5)/5=6.4)
Вариант C5 Из массива удалить четные элементы, стоящие между максимальным и минимальным элементами. Пример: из массива A[7]: 1 8 8 4 7 0 5 должен получиться массив A[5]: 1 8 7 0 5
Вариант C6 Из массива удалить элементы, кратные трем, стоящие между максимальным и минимальным элементами. Пример: из массива A[7]: 1 9 3 4 9 0 0 должен получиться массив A[5]: 1 9 4 0 0
Вариант C7 Из массива удалить элементы, имеющие четный индекс и стоящие между максимальным и минимальным элементами. Пример: из массива A[7]: 9 3 4 9 1 0 0 должен получиться массив A[5]: 9 4 1 0 0
Вариант C8 Из массива удалить элементы, встречающиеся в массиве более одного раза. Пример: из массива A[7]: 9 3 4 9 1 0 0 должен получиться массив A[3]: 3 4 1
Вариант C9 Из массива удалить элементы, встречающиеся в массиве только один раз. Пример: из массива A[7]: 9 1 4 9 1 9 0 должен получиться массив A[5]: 9 1 9 1 9
Вариант C10 Из массива удалить нечетные элементы, встречающиеся в массиве только один раз. Пример: из массива A[7]: 4 1 4 3 1 9 0 должен получиться массив A[5]: 4 1 4 1 0 Задачи посложнее
Вариант D1 Из массива удалить самую длинную цепочку четных элементов. Пример: из массива A[8]: 4 1 4 2 1 2 4 6 должен получиться массив A[5]: 4 1 4 2 1 (самая длинная цепочка четных чисел включает элементы с 6 по 8: 2 4 6)
Вариант D2 Из массива удалить цепочки из четных элементов, состоящие менее чем из трех элементов. Пример: из массива A[8]: 4 3 4 2 1 2 4 6 должен получиться массив A[5]: 3 1 2 4 6
Вариант D3 Из массива удалить цепочки из нечетных элементов, состоящие менее чем из трех элементов. Пример: из массива A[8]: 3 3 4 5 2 3 7 9 должен получиться массив A[5]: 4 2 3 7 9
Вариант D4 Из массива A удалить те элементы, которые встречаются и в массиве A и в массиве B по крайней мере по 2 раза. Пример: массив A[8]: 3 3 4 5 2 3 5 9 массив B[7]: 1 2 3 4 5 2 5 По 2 раза в обоих массивах встречается только элемент, равный 5. Массив A после удаления примет вид: A[6]: 3 3 4 2 3 9
Вариант D5 Из массива из каждой цепочки четных элементов удалить самый маленький элемент. Пример: из массива A[9]: 3 6 4 5 2 3 4 6 4 должен получиться массив A[6]: 3 6 5 3 6 4
Вариант D6 Из массива A удалить те цепочки четных элементов, в которых есть хотя бы один элемент из массива B. Пример: массив A[9]: 3 2 4 5 2 3 2 6 5 массив B[6]: 1 3 4 7 8 9 Массив A после удаления примет вид: A[7]: 3 5 2 3 2 6 5
Вариант D7 Из массива A удалить те цепочки нечетных элементов, в которых нет ни одного элемента из массива B. Пример: массив A[10]: 3 2 7 5 2 1 2 6 3 9 массив B[5]: 1 2 5 4 8 Массив A после удаления примет вид: A[7]: 2 7 5 2 1 2 6
Вариант D8 Из массива A удалить те цепочки нечетных элементов, в которых нет ни одного элемента из массива B. Пример: массив A[10]: 3 2 7 5 2 1 2 6 3 9 массив B[5]: 1 2 5 4 8 Массив A после удаления примет вид: A[7]: 2 7 5 2 1 2 6
Вариант D9 Между массивами A и B обменять их самые длинные цепочки из одинаковых элементов. Пример: массив A[10]: 3 2 2 5 2 1 1 1 3 9 массив B[8]: 1 2 5 5 4 8 3 3 В массиве A самая длинная цепочка: 1 1 1 (элементы с 7 по 9) В массиве B самая длинная цепочка: 5 5 (элементы с 3 по 4) Массив A после перестановки в него цепочки из массива B: A[9]: 3 2 2 5 2 5 5 3 9 Массив B после перестановки в него цепочки из массива A: B[9]: 1 2 1 1 1 4 8 3 3
Вариант D10 Между массивами A и B обменять их самые длинные цепочки из четных элементов. Пример: массив A[10]: 3 2 4 6 2 1 1 1 8 9 массив B[7]: 1 0 5 5 4 3 3 В массиве A самая длинная цепочка: 2 4 6 2 (элементы со 2 по 5) В массиве B самая длинная цепочка: 0 (элемент 2) Массив A после перестановки в него цепочки из массива B: A[7]: 3 0 1 1 1 8 9 Массив B после перестановки в него цепочки из массива A: B[10]: 1 2 4 6 2 5 5 4 3 3
Популярное:
|
Последнее изменение этой страницы: 2016-08-31; Просмотров: 540; Нарушение авторского права страницы