Обработка

Большинство задач на обработку массива сводятся к комбинированию следующих алгоритмов:
  • Заполнение
    • Заполнение случайными числами.
    • Использование в формуле заполнения индекса элемента.
    • Использование рекуррентного соотношения.
  • Анализ
    • Задачи подсчета — нахождение суммы или количества  элементов таблицы, обладающих заданным свойством.
    • Нахождение минимального или максимального среди элементов массива.
    • Задачи, в которых требуется найти какие-то характеристики массива.
  • Поиск
  • Перестановка
    • Задачи, в которых требуется поменять местами элементы массива.
    • Задачи циклической перестановки.
    • Задачи сортировки элементов массива.
ЗаполнениеАнализПоискПерестановка
Генерация и присваивание значений с помощью датчика случайных чисел
Функции и процедуры, используемые для заполнения массива случайными числами:
Random - функция, возвращает случайное вещественное в диапазоне [0..1).
Random(x) -функция, возвращает случайное целое в диапазоне от 0 до x-1.
Randomize - процедура языка Pascal, которая инициализирует встроенный генератор случайных чисел с произвольным значением.
Заполнение массива оператором случайных чисел Random на интервале [0;1):
randomize;
for i:=1 to n do
a[i]:=random;
Пример 1 (.pas) Заполните массив, состоящий из 10 вещественных чисел в диапазоне [0..1):
randomize;
for i:=1 to 10 do
a[i]:=random;
Заполнение массива оператором случайных чисел Random на интервале [ a ; b ]:
randomize;
for i:=1 to n do
a[ i ] := random (b-a+1)+a;
Пример 2 (.pas) Заполните массив, состоящий из 10 целых чисел на интервале [5..10]:
randomize;
for i:=1 to 10 do
a[ i ] := random (6)+5;
Заполнение массива оператором случайных чисел Random на интервале [a ; b):
randomize;
for i:=1 to n do
a[ i ] := random (b-a)+a;
Пример 3 (.pas) Заполните массив, состоящий из 10 целых чисел на интервале [5..10):
randomize;
for i:=1 to 10 do
a[ i ] := random (5)+5;
Пример 4 (.pas) Заполните массив на 25 элементов целыми значениями, лежащими в диапазоне от –12 до 7, и организуйте вывод первых 7 элементов.
program z;
         const n=25;
         type mas= array [1..n] of integer;
         var a: mas;
         i: integer;
begin
         cls;
         randomize;
         for i:=1 to n do
         a[ i ] := random (20)-12;
         for i:=1 to 7 do  write(a[i],' ');
end.
Использование в формуле заполнения индекса элемента
         Если элементы массива удовлетворяют некоторой закономерности, например, являются четными числами, то их ввод можно организовать с помощью формул, содержащих индекс элемента.
Например, заполним массив чисел, так чтобы:
  1. Значения элементов массива совпадают с квадратами их индексов: 
    for i:=1 to N do a[i]:=i*i;
  2. Значения элементов массива совпадают с их индексами:
    for i:=1 to N do a[i]:=i;
  3. Значения элементов массива - числа нечетные: 
    for i:=1 to N do a[i]:=2i - 1;
  4. Значения элементов массива - числа четные:
    for i:=1 to N do a[i]:=2i;
  5. Значения элементов массива - числа обратные индексам:
    for i:=1 to N do a[i]:=1/i.
Использование рекуррентного соотношения
Если значение элемента зависит от предыдущего элемента массива, то начальному элементу массива необходимо присвоить требуемое значение, а все остальные элементы вычислять используя рекурентное соотношение.
Например, заполним массив чисел, так чтобы:
  1. Значения элементов массива являлись числами Фибоначчи (каждый последующий элемент равен сумме двух предыдущих: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, …): (.pas)
    F[0]:=0;
    F[1]:=1;
    for i:= 2 to n do F[i]:= F[i-1]+F[i-2];
  2. Элементы массива - последовательность чисел: 1, 4, 7, 10, ...
    a[1]:=1;
    for i:=2 to n do a[i]:=a[i-1]+3;

Комментариев нет:

Отправить комментарий