- Основные задачи
- Шпаргалка
- Вопросы и задания
Большинство задач на обработку массива сводятся к комбинированию следующих алгоритмов:
- Заполнение
- Заполнение случайными числами.
- Использование в формуле заполнения индекса элемента.
- Использование рекуррентного соотношения.
- Анализ
- Задачи подсчета — нахождение суммы или количества элементов таблицы, обладающих заданным свойством.
- Нахождение минимального или максимального среди элементов массива.
- Задачи, в которых требуется найти какие-то характеристики массива.
- Поиск
- Перестановка
- Задачи, в которых требуется поменять местами элементы массива.
- Задачи циклической перестановки.
- Задачи сортировки элементов массива.
Заполнение | Анализ | Поиск | Перестановка |
´В задачах из таблицы массив задан (под словом "задан" будем понимать, что массив описан и значения его элементов определены).
Задачи, в которых требуется поменять местами элементы массива. | |
Перестановка элементов массива в обратном порядке(.pas) | |
Метод решения:
for i:=1 to n div 2 do
|
|
Перестановка соседних элементов массива (.pas) | |
Метод решения:
for i:=1 to n div 2 do |
|
Обмен половин массива(.pas) | |
Метод решения:
k:=n div 2; |
|
Перестановка максимального и минимального элементов массива.(.pas) | |
Метод решения:
imax:=1; |
|
Задачи циклической перестановки. | |
Циклический сдвиг элементов массива на один элемент вправо, последний элемент при этом должен оказаться на первом месте.(.pas) | |
c:=a[n]; for i:=n downto 2 do a[i]:=a[i-1]; a[1]:=c; |
|
Циклический сдвиг элементов массива на один элемент влево, первый элемент при этом должен оказаться на последнем месте.(.pas) | |
c:=a[1]; for i:=2 to n do a[i-1]:=a[i]; a[n]:=c; |
|
Задачи сортировки элементов массива. | |
Сортировка «пузырьком» (.pas) |
|
Метод решения: for i:=1 to k do if a[i+1]<a[i] then begin c:=a[i]; a[i]:=a[i+1]; a[i+1]:=c; end; |
|
Сортировка выбором(.pas) | |
Метод решения: for k:=1 to n do |
|
Сортировка методом прямого включения(.pas) | |
Метод решения: for k := 2 to n do |
Вопросы:
- Известны результаты конкурса "ИнфоКоТ" для 21 участника. Расположить данные результаты в порядке возрастания набранных баллов (.pas).
- Задан список ID брокеров товарной биржи из n человек. Обменяйте местами ID брокеров: первого и последнего, второго и предпоследнего, третьего от начала и третьего от конца и т.д.
Вопросы:
№ |
Фрагмент программы |
Блок - схема |
1 | Вычисление суммы всех элементов массива |
|
2 | Вычисление среднего арифметического чётных элементов массива |
|
3 | Найти произведение всех элементов массива |
|
4 | Количество четных элементов массива |
|
5 | Удвоить все положительные элементы массива, и поменять знак у остальных |
|
6 | Перестановка всех элементов массива в обратном порядке |
|
7 | Перестановка соседних элементов массива |
|
8 | Обмен половин массива |
|
9 | Проверить, есть ли в массиве четные числа |
|
10 | Проверить, что массив упорядочен строго по возрастанию |
|
11 | Поиск максимального элемента массива (границы изменения значений элементов массива неизвестны) |
|
12 | Значения элементов массива принадлежат промежутку от -500 до 500. Найти максимальный элемент массива. |
|
13 | Поиск количества элементов произвольного массива равных максимальному |
|
14 | Найти номер максимального элемента массива, если он единственный, или количество максимальных элементов, если их несколько. |
|
15 | Поиск второго по величине максимального элемента массива max:=a[1]; max2:=a[2]; if max<max2 then begin max:=a[2]; max2:=a[1]; end; for i:=3 to n do if a[i]>max then begin max2:=max; max:=a[i]; end else if a[i]>max2 then max2:=a[i]; |
|
16 | Поиск номера максимального элемента |
|
17 | Значения элементов массива принадлежат диапазону от – 500 до 500. найти максимальный отрицательный элемент массива. Гарантируется, что отрицательные элементы есть. |
|
18 | Номера двух элементов массива наименее отличающихся друг от друга |
|
19 | Номера двух последовательных элементов массива наименее отличающихся друг от друга |
Задача 1 (..pas) Дан целочисленный массив из 30 элементов. Элементы могут принимать значения от 0 до 100 – баллы, полученные на ЕГЭ. Опишите на русском языке или на одном из языков программирования алгоритм, который подсчитывает и выводит средний балл учащихся, сдавших экзамен (получивших оценку более 20 баллов). Гарантируется, что хотя бы один ученик в классе успешно сдал экзамен. Исходные данные объявлены так, как показано ниже. Использовать другие переменные запрещается.
const N = 30;
var A: array[1..N] of integer;
i, x, y: integer;
s: real;
begin
for i:=1 to N do readln(A[i]);
...
end.
const N=30;
var a: array [1..N] of integer;
i, j, min: integer;
begin
for i:=1 to N do readln(a[i]);
...
end.
Задача
3 (.pas) Дан массив, состоящий из 30 вещественных чисел. Вычислить сумму всех элементов. Массив вводится с клавиатуры.
а) Наберите программу или воспользуйтеть файлом .pas, заменив многоточие на необходимые команды:
Program z;
Const n=5;
type mas=array[1..n] of real;
var a: mas;
s: real;
i: integer;
begin
for i:=........ to ....... do
begin
writeln (‘введите элемент массива’);
......................;
S:=S+........ ;
end;
writeln (‘ Сумма равна’,.......);
End.
б) запустите данную программу и посмотрите результат её работы.
Задача
4. Дан массив целых чисел.
а) каждый положительный элемент, заменить на его квадрат;
б) выяснить, верно ли, что максимальный элемент больше среднего арифметического на 5.
Задача 5 (.pas) Дан целочисленный массив из 20 элементов. Элементы массива могут принимать целые значения от 0 до 1000. Опишите на русском языке или на одном из языков программирования алгоритм, позволяющий найти и вывести минимальное значение среди элементов массива, которые имеют чётное значение и не делятся на три. Гарантируется, что в исходном массиве есть хотя бы один элемент, значение которого чётно и не кратно трем. Исходные данные объявлены так, как показано ниже. Запрещается использовать переменные, не описанные ниже, но использовать все описанные переменные не обязательно.
N = 20;
var
a: array [1..N] of integer;
i, j, min: integer;
begin
for i := 1 to N do
readln(a[i]);
….......
end.