Массивы
Оценка 4.8

Массивы

Оценка 4.8
ppt
21.10.2020
Массивы
Массивы.ppt

Презентация по программированию

Презентация по программированию

Презентация по программированию

Автор: учитель информатики
МОУ Плесской СОШ
Юдин А.Б.

2012 год

Одномерные
массивы

Массив – пронумерованная совокупность ячеек памяти, названная одним именем 1 2 3 4 5 6 7

Массив – пронумерованная совокупность ячеек памяти, названная одним именем 1 2 3 4 5 6 7

Массив – пронумерованная совокупность ячеек памяти, названная одним именем

1 2 3 4 5 6 7

А

A [ 4 ] := 11;

Имя массива

Индекс (порядковый номер) элемента массива

Значение элемента массива

Определение 1

Описание массива 2

Описание массива 2

Описание массива 2

Var имя:ARRAY[1..N] OF тип;

Объявление массива в разделе описания переменных:

Например:

Var A:Array[1..10] of Integer;

Var Tem:Array[1..100] of Real;

Имя массива

Количество элементов

Тип элементов

Type t=array[1..10] of integer;

Type t=array[1..10] of integer;

Type t=array[1..10] of integer;
Var a : t;

Const   m=10; Var a : array [1.. m] of integer;

Количество элементов можно описать в разделе констант

Иногда массив объявляют как пользовательский тип данных

Описание массива 3

Сonst a:array[1..5] of integer = (3,-2,1,4,3);

Сonst a:array[1..5] of integer = (3,-2,1,4,3);

Сonst a:array[1..5] of  integer =
(3,-2,1,4,3);

Массив констант

Описание массива 4

Var N:Array ['A'..'Z'] of Integer;

Var R:Array [-20..20] of Real;

В зависимости от задачи индексы элементов могут начинаться не только с единицы или быть символьного типа

Заполнение массива с клавиатуры

Заполнение массива с клавиатуры

1. Заполнение массива с клавиатуры

For i:=1 to N do begin
Write(' a [ ' , i , ' ] = ' );
ReadLn ( a [ i ] );
End;

Заполнение массива 5

Заполнение массива случайными числами

Заполнение массива случайными числами

2. Заполнение массива случайными числами.

m[i]:=RANDOM (А)
случайное число из интервала [0; А)
m[i] :=RANDOM(B-A)+A;
случайное число из интервала [A ; B)
m[i] :=RANDOM(B-A+1)+A;
случайное число из интервала [A ; B]

Заполнение массива 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;

Заполнение массива при помощи прогрессии

Заполнение массива при помощи прогрессии

3. Заполнение массива при помощи прогрессии.

Заполнить массив числами 3,5,7,9,11 и т.д.
На первом месте стоит 3
На втором 3+2 = 5
На третьем 5+2 = 7 и т.д.
То есть ai = ai - 1 + 2
Это арифметическая прогрессия.

Заполнение массива 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;

For i:=1 to N do Writeln(a[i]:4:2); б) в строку

For i:=1 to N do Writeln(a[i]:4:2); б) в строку

а) в столбик:
For i:=1 to N do Writeln(a[i]:4:2);

б) в строку
For i:=1 to N do Write(a[i]:4:2);

2.23
3.19
1.44
4.93
5.58

2.23 3.19 1.44 4.93 5.58

Вывод массива 8

Вывод массива в две строки 9

Вывод массива в две строки 9

Вывод массива в две строки 9

Задача 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, вывод осуществляется в строку

Вывод массива в две строки 10 1

Вывод массива в две строки 10 1

Вывод массива в две строки 10

1

Пустой Writeln между циклами обычно в блок-схеме не изображают.

Разрыв блок-схемы, если она целиком на лист не убирается

Заполнение массива 11

Заполнение массива 11

Заполнение массива 11

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

Значение элемента массива зависит только от порядкового номера

Заполнение массива 12

Заполнение массива 12

Заполнение массива 12

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

Значение элемента массива зависит от предшествующего элемента

Изменение элементов массива удовлетворяющих условию

Изменение элементов массива удовлетворяющих условию

Изменение элементов массива удовлетворяющих условию

For i:=1 to N do If (условие) then a[i]:=значение:

Условия:
a [ i ] > 0 – положительный элемент массива
a [ i ] Mod 2 = 0 – четный элемент массива
a [ i ] = int(a [ i ]) – целый элемент массива
a [ i ] = i – элемент массива равен своему порядковому номеру
i Mod 2 = 0 – четные порядковые номера
a [ i ] = К – элемент массива равный числу К

Изменения:
a [ i ] :=5 – заменить i-ый элемент на число 5
a [ i ] := - a [ i ] – заменить i-ый элемент на противоположный по знаку
a [ i ] := a [ i ] * 2 – удвоить каждый элемент массива
a [ i ] := a [ i - 1]+3 –заменить i-ый элемент предшествующим плюс 3

Обработка массива 13

Блок-схема обработки массива Блок-схема обработки и вывода в одном цикле

Блок-схема обработки массива Блок-схема обработки и вывода в одном цикле

Блок-схема обработки массива

Блок-схема обработки и вывода
в одном цикле

Обработка массива 14

Цикл обработки и вывода элементов массива на экран

For i:=1 to N do begin
If (условие) then a[i]:=значение:
Writeln(a[i]:5);
end;

Нахождение суммы элементов массива удовлетворяющих условию: s:=0;

Нахождение суммы элементов массива удовлетворяющих условию: s:=0;

Нахождение суммы элементов массива удовлетворяющих условию:

s:=0;
For i:=1 to N do If (условие) then s:=s+ a[i];
WriteLn ('Сумма = ', s:10:5);

Нахождение суммы и произведения элементов массива 15

Предполагаем, что сумма равна нулю

Если элемент подходит по условию, добавляем его к сумме

Нахождение произведения элементов массива удовлетворяющих условию:

p:=1;
For i:=1 to N do If (условие) then p:=p* a[i];
WriteLn('Произведение = ', p:10:5);

Если элемент подходит по условию, добавляем его к произведению

Предполагаем, что произведение равно единице

Подсчет количества элементов удовлетворяющих условию: k:=0;

Подсчет количества элементов удовлетворяющих условию: k:=0;

Подсчет количества элементов удовлетворяющих условию:

k:=0;
For i:=1 to N do If (условие) then k:=k+1;
WriteLn('Кол-во=',k:10);

Предполагаем, что таких элементов нет

Если такой элемент есть, то К увеличиваем на 1.

Подсчет количества элементов удовлетворяющих условию 16

Задача 4. Дан массив из 15 целых чисел заполненный случайными числами из интервала [0; 20]

Задача 4. Дан массив из 15 целых чисел заполненный случайными числами из интервала [0; 20]

Задача 4. Дан массив из 15 целых чисел заполненный случайными числами из интервала [0; 20]. Выведите этот массив в строку и найдите количество четных элементов массива, которые меньше среднего арифметического его элементов.

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

Определяем число случайным образом

Выводим его на экран

Добавляем к сумме

Writeln; s:=s/15; Writeln('Среднее арифметическое = ',s:10:5); k:=0;

Writeln; s:=s/15; Writeln('Среднее арифметическое = ',s:10:5); k:=0;

Writeln;
s:=s/15;
Writeln('Среднее арифметическое = ',s:10:5);
k:=0;
For i:=1 to 15 do
if (a[i] Mod 2 = 0) and (a[i] Writeln('Четных чисел меньших среднего арифметического ', k:8);

Находим среднее арифметическое

Выводим его на экран

Предполагаем, что таких элементов нет

Организуем цикл из 15 повторений

Если элемент четный и меньше среднего арифметического, увеличиваем К на единицу

Выводим К на экран

Нахождение суммы элементов массива 18

Нахождение максимального элемента в массиве и его номера: max:=a[1]; k:=1; for i:=2 to

Нахождение максимального элемента в массиве и его номера: max:=a[1]; k:=1; for i:=2 to

Нахождение максимального элемента в массиве и его номера:

max:=a[1];
k:=1;
for i:=2 to N do if (a[i]>max) then begin
max:=a[i];
k:=i;
end;
WriteLn(‘Max=’,max:10:5);
WriteLn(‘Номер=’,k:5);

Предполагаем, что наибольший элемент стоит на первом месте

Если находится больший элемент

Он становится максимальным

Когда массив закончился, выводим наибольший элемент и его номер

Максимальный и минимальный элемент массива 19

N do if a[i] > a[max] then max:=i; writeln('Максимальный элемент ',а[max]); writeln('Его номер ',

N do if a[i] > a[max] then max:=i; writeln('Максимальный элемент ',а[max]); writeln('Его номер ',

max:= 1;
for i:=2 to N do if a[i] > a[max] then max:=i;
writeln('Максимальный элемент ',а[max]);
writeln('Его номер ', Max);

Иногда в задаче достаточно определить индекс наибольшего элемента

Максимальный и минимальный элемент массива 20

Предполагаем, что наибольший элемент стоит на первом месте

Если i-ый элемент больше стоящего на месте max

то, запоминаем его индекс в переменной max

Сортировка элементов массива по возрастанию

Сортировка элементов массива по возрастанию

Сортировка элементов массива по возрастанию

For i:=1 to N-1 do
For j:=i to N do
if (a[i]>a[j]) then begin
p:=a[i];
a[i]:=a[j];
a[j]:=p;
end;

Сортировка массива 21

Перебираем элементы от первого до предпоследнего

Перебираем от i-ого элемента до конца

Если в оставшейся строке находится элемент меньше чем i-ый …

То меняем их местами

Сортировка массива:
4; -2; 6; -5
по возрастанию с изменениями происходящими в массиве

Сортировка массива 22 i, 1,

Сортировка массива 22 i, 1,

Сортировка массива 22

i, 1, N-1

j, i, N

ai>aj

p=ai
ai=aj
aj=p

Да

Нет

Общая идея алгоритма:
Берем i-ый элемент
Последовательно сравниваем его со всеми элементами с права
Если находится элемент меньший чем i-ый, то они меняются местами
Так на i-ом месте окажется самый маленький элемент
i увеличиваем на единицу и повторяем процесс…

Массив 4 -2 6 -5 -2 4 6 -5 -5 4 6 -2 -5 -2 6 4 -5 -2 4 6

Массив 4 -2 6 -5 -2 4 6 -5 -5 4 6 -2 -5 -2 6 4 -5 -2 4 6

i

a i

j

a j

ai>aj

1

4

1

4

4>4 нет

2

-2

4> -2 да

-2

3

6

-2 > 6 нет

4

-5

-2 > -5 да

2

4

2

4

4>4 нет

3

6

4>6 нет

-2

4> -2 да

3

6

3

6

6>6 нет

4

6>4 да

Массив

4 -2 6 -5

-2 4 6 -5

-5 4 6 -2

-5 -2 6 4

-5 -2 4 6

Сортировка массива 23

Упорядочить по возрастанию: 4 -2 6 -5

Вставка элемента с номером p в последовательность

Вставка элемента с номером p в последовательность

Вставка элемента с номером p в последовательность

For i:=N downto p do a[i+1]:=a[i];
a[p]:=значение;
N:=N+1;

За каждый оборот цикла смещаем элементы на один номер в право.

Вставка и удаление элементов массива 24

Перебираем элементы от последнего до места на которое нужно вставить,

На место с индексом Р ставим нужное значение и увеличиваем на 1 количество элементов

9

14

11

12

7

100

N

p

9

Удаление элемента с номером p из массива: for i:=p to (N-1) do a[i]:=a[i+1];

Удаление элемента с номером p из массива: for i:=p to (N-1) do a[i]:=a[i+1];

Удаление элемента с номером p из массива:

for i:=p to (N-1) do a[i]:=a[i+1];
N:=N-1;

Вставка и удаление элементов массива 25

Перебираем элементы от места которое удаляем до предпоследнего элемента

Уменьшаем на 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

Задача 5. Дан массив из 10 целых, положительных не повторяющихся чисел

Задача 5. Дан массив из 10 целых, положительных не повторяющихся чисел

Задача 5. Дан массив из 10 целых, положительных не повторяющихся чисел. Проверить образуют ли его элементы арифметическую прогрессию. Если образуют, то вывести разность прогрессии.

// заполнить массив
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

Находим разность между первым и вторым элементом

Предполагаем, что массив – арифметическая прогрессия

Организуем цикл от второго до предпоследнего элемента

Если находится пара элементов, у которых другая разность, то это не арифметическая прогрессия

Если значение истинно

То выводим разность и соответствующее сообщение

Иначе – выводим соответствующее сообщение

Начало Проверка массива 28 r:= a2-a1; flag:=true i, 2, 9 ai+1-ai ≠ r flag:=false flag=true 1

Начало Проверка массива 28 r:= a2-a1; flag:=true i, 2, 9 ai+1-ai ≠ r flag:=false flag=true 1

Начало

Проверка массива 28

r:= a2-a1;

flag:=true

i, 2, 9

ai+1-ai ≠ r

flag:=false

flag=true

1

Вывод:
Прогрессия

Вывод:
Не прогрессия

Конец

Заполнение массива и вывод его на экран

1

Нет

Нет

Да

Да

Цикл в котором проверяется разность между соседними элементами

Условие проверяющее изменилась ли переменная Flag

Задача 6 . Дан массив из 10 случайных чисел из интервала от -10 до 10

Задача 6 . Дан массив из 10 случайных чисел из интервала от -10 до 10

Задача 6. Дан массив из 10 случайных чисел из интервала от -10 до 10. Найти номер первого отрицательного элемента (Он обязательно существует)

Поиск элемента 29

// заполнить массив
i:=1;
while (a[i]>=0) do i:=i+1;
write('Первое отрицательное ',a[i]:4);

Пока элемент массива положителен или ноль берем следующий элемент

Заполнение массива 30

Заполнение массива 30

Заполнение массива 30

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

Цикл отвечающий за количество чисел в массиве

Цикл возвращающий процесс назад если такое число уже было

Цикл в котором проверяется не встречалось ли такое число

Заполнение массива 31 i,1,10 flag=false a i = случайное[0;10) j, 1, i-1 ai=a j flag=true flag=false

Заполнение массива 31 i,1,10 flag=false a i = случайное[0;10) j, 1, i-1 ai=a j flag=true flag=false

Заполнение массива 31

i,1,10

flag=false

a i = случайное[0;10)

j, 1, i-1

ai=a j

flag=true

flag=false

Вывод
a i

Да

Нет

Да

Нет

Цикл возвращающий процесс назад если такое число уже было

Цикл отвечающий за количество чисел в массиве

Цикл в котором проверяется не встречалось ли такое число

Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
21.10.2020