Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемВера Селиванкина
1 Презентация по программированию Автор: учитель информатики МОУ Плесской СОШ Юдин А.Б год
2 Массив – пронумерованная совокупность ячеек памяти, названная одним именем А A [ 4 ] := 11; Имя массива Индекс (порядковый номер) элемента массива Значение элемента массива Определение 1
3 Описание массива 2 Var имя:ARRAY[1..N] OF тип; Объявление массива в разделе описания переменных: Например: Var A:Array[1..10] of Integer ; Var Tem:Array[1..100] of Real; Имя массива Количество элементов Тип элементов
4 Type t=array[1..10] of integer; Var a : t; Const m=10; Var a : array [1.. m] of integer; Количество элементов можно описать в разделе констант Иногда массив объявляют как пользовательский тип данных Описание массива 3
5 Сonst a:array[1..5] of integer = (3,-2,1,4,3); Массив констант Описание массива 4 Var N:Array ['A'..'Z'] of Integer; Var R:Array [ ] of Real; В зависимости от задачи индексы элементов могут начинаться не только с единицы или быть символьного типа
6 1. Заполнение массива с клавиатуры For i:=1 to N do begin Write(' a [ ', i, ' ] = ' ); ReadLn ( a [ i ] ); End; i, 1, N Ввод a i Заполнение массива 5
7 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; i, 1, N Вывод a i a i = случайное [A ; B)
8 3. Заполнение массива при помощи прогрессии. Заполнить массив числами 3,5,7,9,11 и т.д. На первом месте стоит 3 На втором 3+2 = 5 На третьем 5+2 = 7 и т.д. То есть a i = a i Это арифметическая прогрессия. Заполнение массива 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; i, 2, N Вывод a i a i = a i Вывод a 1 a 1 = 3
9 а) в столбик: For i:=1 to N do Writeln(a[i]:4:2); б) в строку For i:=1 to N do Write(a[i]:4:2); i, 1, N Вывод a i Вывод массива 8
10 Вывод массива в две строки 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, вывод осуществляется в строку
11 Вывод массива в две строки 10 i, 1, 10 Вывод a i a i = a i + 1 Конец i, 1, 10 Вывод a i a i = случайное [-10 ; 10] Начало 1 1 Пустой Writeln между циклами обычно в блок- схеме не изображают. Разрыв блок-схемы, если она целиком на лист не убирается
12 Заполнение массива 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. Значение элемента массива зависит только от порядкового номера
13 Заполнение массива 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. Значение элемента массива зависит от предшествующего элемента
14 Изменение элементов массива удовлетворяющих условию 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
15 i, 1, N a i = значение условие нет да Блок-схема обработки массива Блок-схема обработки и вывода в одном цикле Обработка массива 14 i, 1, N Вывод a i a i = значение условие нет да Цикл обработки и вывода элементов массива на экран For i:=1 to N do begin If (условие) then a[i]:=значение: Writeln(a[i]:5); end;
16 Нахождение суммы элементов массива удовлетворяющих условию: 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); Если элемент подходит по условию, добавляем его к произведению Предполагаем, что произведение равно единице
17 Подсчет количества элементов удовлетворяющих условию: k:=0; For i:=1 to N do If (условие) then k:=k+1; WriteLn('Кол-во=',k:10); Предполагаем, что таких элементов нет Если такой элемент есть, то К увеличиваем на 1. i, 1, N Вывод k k := k + 1 условие нет да k := 0 Подсчет количества элементов удовлетворяющих условию 16
18 Задача 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 Определяем число случайным образом Выводим его на экран Добавляем к сумме
19 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]
20 Нахождение максимального элемента в массиве и его номера: 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
21 max:= 1; for i:=2 to N do if a[i] > a[max] then max:=i; writeln('Максимальный элемент ',а[max]); writeln('Его номер ', Max); Иногда в задаче достаточно определить индекс наибольшего элемента Максимальный и минимальный элемент массива 20 Предполагаем, что наибольший элемент стоит на первом месте Если i-ый элемент больше стоящего на месте max то, запоминаем его индекс в переменной max
22 Сортировка элементов массива по возрастанию 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 по возрастанию с изменениями происходящими в массиве
23 Сортировка массива 22 i, 1, N-1 j, i, N a i >a j p=a i a i =a j a j =p Да Нет Общая идея алгоритма: 1. Берем i-ый элемент 2. Последовательно сравниваем его со всеми элементами с права 3. Если находится элемент меньший чем i-ый, то они меняются местами 4. Так на i-ом месте окажется самый маленький элемент 5. i увеличиваем на единицу и повторяем процесс…
24 ia i ja j a i >a j 14144>4 нет > -2 да > 6 нет > -5 да 24244>4 нет 24364>6 нет > -2 да 36366>6 нет 36446>4 да Массив Сортировка массива 23 Упорядочить по возрастанию:
25 Вставка элемента с номером p в последовательность For i:=N downto p do a[i+1]:=a[i]; a[p]:=значение; N:=N+1; За каждый оборот цикла смещаем элементы на один номер в право Вставка и удаление элементов массива 24 Перебираем элементы от последнего до места на которое нужно вставить, На место с индексом Р ставим нужное значение и увеличиваем на 1 количество элементов N p 9
26 Удаление элемента с номером p из массива: for i:=p to (N-1) do a[i]:=a[i+1]; N:=N-1; Вставка и удаление элементов массива 25 Перебираем элементы от места которое удаляем до предпоследнего элемента Уменьшаем на 1 количество элементов За каждый оборот цикла смещаем элементы на один номер в лево p 9 N 100
27 Вставка элементов удовлетворяющих условию в другой массив. Пусть нам дан массив с именем А, а переместить элементы нужно в массив В j:=0; For i:=1 to N do if (а[i]…) then begin j:=j+1; b[j]:=a[i]; end; K:=j; Порядковый номер элемента в массиве В Если элемент из А удовлетворяет условию То, увеличиваем количество элементов в В, и под этим индексом помещаем элемент из А Количество элементов в массиве В будет равно последнему порядковому номеру перенесенного элемента Выбор элементов массива в другой массив 26
28 Задача 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 Находим разность между первым и вторым элементом Предполагаем, что массив – арифметическая прогрессия Организуем цикл от второго до предпоследнего элемента Если находится пара элементов, у которых другая разность, то это не арифметическая прогрессия Если значение истинно То выводим разность и соответствующее сообщение Иначе – выводим соответствующее сообщение
29 Начало Проверка массива 28 r:= a 2 -a 1 ; flag:=true i, 2, 9 a i+1 -a i r flag:=false flag=true 1 Вывод: Прогрессия Вывод: Не прогрессия Конец Заполнение массива и вывод его на экран 1 Нет Да Цикл в котором проверяется разность между соседними элементами Условие проверяющее изменилась ли переменная Flag
30 Задача 6. Дан массив из 10 случайных чисел из интервала от -10 до 10. Найти номер первого отрицательного элемента (Он обязательно существует) Поиск элемента 29 // заполнить массив i:=1; while (a[i]>=0) do i:=i+1; write('Первое отрицательное ',a[i]:4); Пока элемент массива положителен или ноль берем следующий элемент
31 Заполнение массива 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; Цикл отвечающий за количество чисел в массиве Цикл возвращающий процесс назад если такое число уже было Цикл в котором проверяется не встречалось ли такое число
32 Заполнение массива 31 i,1,10 flag=false a i = случайное[0;10) j, 1, i-1 a i =a j flag=true flag=false Вывод a i Да Нет Да Нет Цикл возвращающий процесс назад если такое число уже было Цикл отвечающий за количество чисел в массиве Цикл в котором проверяется не встречалось ли такое число
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.