именем
1 2 3
4 5 6 7 А
A [ 4 ] := 11;
Имя массива
Индекс (порядковый номер) элемента массива
Значение элемента массива
Определение 1
FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.
Email: Нажмите что бы посмотреть
А
A [ 4 ] := 11;
Имя массива
Индекс (порядковый номер) элемента массива
Значение элемента массива
Определение 1
Var имя:ARRAY[1..N] OF тип;
Объявление массива в разделе описания переменных:
Например:
Var A:Array[1..10] of Integer;
Var Tem:Array[1..100] of Real;
Имя массива
Количество элементов
Тип элементов
Количество элементов можно описать в разделе констант
Иногда массив объявляют как пользовательский тип данных
Описание массива 3
Массив констант
Описание массива 4
Var N:Array ['A'..'Z'] of Integer;
Var R:Array [-20..20] of Real;
В зависимости от задачи индексы элементов могут начинаться не только с единицы или быть символьного типа
Заполнение массива 5
Заполнение массива 6
Например:
Случайное число из интервала [-5 ; 8).
А = - 5, В = 8,
подставим в формулу
m[i] :=RANDOM(B-A)+A;
m[i] :=RANDOM(8-(-5))+(-5);
такую запись нужно упростить
m[i] :=RANDOM(13)-5;
For i:=1 to N do begin
a[i]:=Random(B-A)+A;
WriteLn(a[i]:10:5);
End;
Заполнение массива 7
a[1]:=3;
Writeln(a[1]);
For i:=2 to N do begin
a[i]:=a[i-1] + 2;
Writeln(a[i]:5);
End;
Вывод массива 8
Задача 1. Заполнить массив из 10 элементов случайными числами из интервала от -10 до 10, вывести на экран, а затем увеличить каждый элемент массива на 1 и повторно вывести на экран.
var A:array [1..10] of integer;
i:integer;
Begin
Clrscr;
for i:=1 to 10 do begin
a[i]:= random(21)-10;
write(a[i]:5);
end;
writeln;
for i:=1 to 10 do begin
a[i]:=a[i]+1;
write(a[i]:5);
end;
end.
Оператор вывода без LN, вывод осуществляется в строку
Пустой оператор вывода с LN, когда первая строка закончена, переход на вторую
Оператор вывода без LN, вывод осуществляется в строку
1
Пустой Writeln между циклами обычно в блок-схеме не изображают.
Разрыв блок-схемы, если она целиком на лист не убирается
Задача 2. Составить программу заполняющую массив из 10 элементов, числовой последовательностью: 1,4,9,16…
(где A i = i 2 )
Program n2;
Uses Crt;
var a:array[1..10] of integer;
i:integer;
begin
clrscr;
for i:=1 to 10 do begin
a[i]:=i*i;
write(a[i]:5);
end;
end.
Значение элемента массива зависит только от порядкового номера
Задача 3. Составить программу заполняющую массив из 10 элементов, числовой последовательностью: 2, 3, 5, 9, 17 и т.д.
Uses Crt;
var a:array[1..10] of integer;
i:integer;
begin
clrscr;
a[1]:=2;
write(a[1]:5);
for i:=2 to 10 do begin
a[i]:=2*a[i-1]-1;
write(a[i]:5);
end;
end.
Значение элемента массива зависит от предшествующего элемента
Изменения:
a [ i ] :=5 – заменить i-ый элемент на число 5
a [ i ] := - a [ i ] – заменить i-ый элемент на противоположный по знаку
a [ i ] := a [ i ] * 2 – удвоить каждый элемент массива
a [ i ] := a [ i - 1]+3 –заменить i-ый элемент предшествующим плюс 3
Обработка массива 13
Цикл обработки и вывода элементов массива на экран
For i:=1 to N do begin
If (условие) then a[i]:=значение:
Writeln(a[i]:5);
end;
Нахождение суммы и произведения элементов массива 15
Предполагаем, что сумма равна нулю
Если элемент подходит по условию, добавляем его к сумме
Нахождение произведения элементов массива удовлетворяющих условию:
p:=1;
For i:=1 to N do If (условие) then p:=p* a[i];
WriteLn('Произведение = ', p:10:5);
Если элемент подходит по условию, добавляем его к произведению
Предполагаем, что произведение равно единице
Если такой элемент есть, то К увеличиваем на 1.
Подсчет количества элементов удовлетворяющих условию 16
ClrScr;
s:=0;
For i:=1 to 15 do begin
a[i]:=Random(21);
write (a[i]:10);
S:=S+a[i];
end;
Предполагаем, что сумма равна нулю
Организуем цикл из 15 повторений
Нахождение суммы элементов массива 17
Определяем число случайным образом
Выводим его на экран
Добавляем к сумме
Находим среднее арифметическое
Выводим его на экран
Предполагаем, что таких элементов нет
Организуем цикл из 15 повторений
Если элемент четный и меньше среднего арифметического, увеличиваем К на единицу
Выводим К на экран
Нахождение суммы элементов массива 18
Предполагаем, что наибольший элемент стоит на первом месте
Если находится больший элемент
Он становится максимальным
Когда массив закончился, выводим наибольший элемент и его номер
Максимальный и минимальный элемент массива 19
Иногда в задаче достаточно определить индекс наибольшего элемента
Максимальный и минимальный элемент массива 20
Предполагаем, что наибольший элемент стоит на первом месте
Если i-ый элемент больше стоящего на месте max
то, запоминаем его индекс в переменной max
Сортировка массива 21
Перебираем элементы от первого до предпоследнего
Перебираем от i-ого элемента до конца
Если в оставшейся строке находится элемент меньше чем i-ый …
То меняем их местами
Сортировка массива:
4; -2; 6; -5
по возрастанию с изменениями происходящими в массиве
i, 1, N-1
j, i, N
ai>aj
p=ai
ai=aj
aj=p
Да
Нет
Общая идея алгоритма:
Берем i-ый элемент
Последовательно сравниваем его со всеми элементами с права
Если находится элемент меньший чем i-ый, то они меняются местами
Так на i-ом месте окажется самый маленький элемент
i увеличиваем на единицу и повторяем процесс…
Вставка и удаление элементов массива 24
Перебираем элементы от последнего до места на которое нужно вставить,
На место с индексом Р ставим нужное значение и увеличиваем на 1 количество элементов
9
14
11
12
7
100
N
p
9
Перебираем элементы от места которое удаляем до предпоследнего элемента
Уменьшаем на 1 количество элементов
За каждый оборот цикла смещаем элементы на один номер в лево.
14
11
12
7
p
9
N
100
j:=0;
For i:=1 to N do
if (а[i]…) then begin
j:=j+1;
b[j]:=a[i];
end;
K:=j;
Порядковый номер элемента в массиве В
Если элемент из А удовлетворяет условию
То, увеличиваем количество элементов в В, и под этим индексом помещаем элемент из А
Количество элементов в массиве В будет равно последнему порядковому номеру перенесенного элемента
Выбор элементов массива в другой массив 26
// заполнить массив
r:= a[2]-a[1];
flag:=true;
For i:=2 to 9 do if (a[i+1]-a[i]<>r) then flag:=false;
If flag then Begin
Writeln('Арифметическая прогрессия');
Writeln('Разность = ',r:8);
End
else
Writeln('Не арифметическая прогрессия');
Проверка массива 27
Находим разность между первым и вторым элементом
Предполагаем, что массив – арифметическая прогрессия
Организуем цикл от второго до предпоследнего элемента
Если находится пара элементов, у которых другая разность, то это не арифметическая прогрессия
Если значение истинно
То выводим разность и соответствующее сообщение
Иначе – выводим соответствующее сообщение
r:= a2-a1;
flag:=true
i, 2, 9
ai+1-ai ≠ r
flag:=false
flag=true
1
Вывод:
Прогрессия
Вывод:
Не прогрессия
Конец
Заполнение массива и вывод его на экран
1
Нет
Нет
Да
Да
Цикл в котором проверяется разность между соседними элементами
Условие проверяющее изменилась ли переменная Flag
Поиск элемента 29
// заполнить массив
i:=1;
while (a[i]>=0) do i:=i+1;
write('Первое отрицательное ',a[i]:4);
Пока элемент массива положителен или ноль берем следующий элемент
Задача 7. Заполнить массив из 10 элементов случайными числами из интервала [0; 10), так, чтобы числа не повторялись.
For i:=1 to 10 do
begin
repeat
flag:=false;
a[i]:=random(10);
for j:=1 to i-1 do if a[i]=a[j] then flag:=true;
until flag=false;
write(a[i]:5);
end;
Цикл отвечающий за количество чисел в массиве
Цикл возвращающий процесс назад если такое число уже было
Цикл в котором проверяется не встречалось ли такое число