Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемПолина Векшинская
1 К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 63. Алгоритмы обработки массивов Алгоритмы обработки массивов
2 К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 63. Алгоритмы обработки массивов 2
3 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Поиск в массиве 3 Найти элемент, равный X: i:= 1; while A[i] <> X do i:= i + 1; write('A[',i,']=',X); i:= 1; while A[i] <> X do i:= i + 1; write('A[',i,']=',X); Что плохо? ? i:= 1; while and (A[i] <> X) do i:= i + 1; if i <= N then write('A[',i,']=',X) else write('Не нашли!'); i:= 1; while and (A[i] <> X) do i:= i + 1; if i <= N then write('A[',i,']=',X) else write('Не нашли!'); Что если такого нет? ? (i <= N) должно быть первым!
4 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, program arrSearch; const N = 5; var A: array[1..N] of integer; i, X: integer; begin writeln ( 'Введите элементы массива:' ); for i:=1 to N do read ( A[i] ); write ( 'Что ищем? ' ); read ( X ); i:= 1; while (i X) do i:= i + 1; if i <= N then write('A[', i, ']=', X) else write('Не нашли!'); end. Программа>>>>>>
5 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Поиск в массиве 5 nX:= 0; for i:=1 to N do if A[i] = X then begin nX:= i; end; if nX > 0 then write('A[',i,']=',X) else write('Не нашли!'); nX:= 0; for i:=1 to N do if A[i] = X then begin nX:= i; end; if nX > 0 then write('A[',i,']=',X) else write('Не нашли!'); Вариант с досрочным выходом: break досрочный выход из цикла
6 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, program arrSearch; const N = 5; var A: array[1..N] of integer; i, X, nX: integer; begin writeln ( 'Введите элементы массива:' ); for i:=1 to N do read ( A[i] ); write ( 'Что ищем? ' ); read ( X ); nX:= 0; for i:=1 to N do if A[i] = X then begin nX:= i; { break не работает в АЛГО } break end; if nX > 0 then write('A[', nX, ']=', X) else write('Не нашли!'); end. Программа>>>>>>
7 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 7 «A»: Заполните массив случайными числами в интервале [0,5]. Введите число X и найдите все значения, равные X. Пример: Массив: Что ищем: 2 Нашли: A[2]=2, A[5]=2 Пример: Массив: Что ищем: 6 Ничего не нашли.
8 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 8 «B»: Заполните массив случайными числами в интервале [0,5]. Определить, есть ли в нем элементы с одинаковыми значениями, стоящие рядом. Пример: Массив: Есть: 3 Пример: Массив: Нет
9 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 9 «C»: Заполните массив случайными числами. Определить, есть ли в нем элементы с одинаковыми значениями, не обязательно стоящие рядом. Пример: Массив: Есть: 3, 2 Пример: Массив: Нет
10 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Максимальный элемент 10 M:= A[1]; for i:= 2 to N do if A[i] > M then M:= A[i]; write(M); M:= A[1]; for i:= 2 to N do if A[i] > M then M:= A[i]; write(M); M:= A[1]; for i:= 2 to N do if A[i] > M then begin M:= A[i]; end; write('A[',nMax,']=',M); M:= A[1]; for i:= 2 to N do if A[i] > M then begin M:= A[i]; end; write('A[',nMax,']=',M); nMax:= 1; nMax:= i; Что можно улучшить? ? Как найти его номер? ?
11 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Максимальный элемент и его номер 11 По номеру элемента можно найти значение! ! nMax:= 1; for i:= 2 to N do if A[i] > then nMax:= i; write('A[',nMax,']=', ); nMax:= 1; for i:= 2 to N do if A[i] > then nMax:= i; write('A[',nMax,']=', ); A[nMax]
12 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, program arrMax; const N = 5; var A: array[1..N] of integer; i, nMax: integer; begin writeln ( 'Введите элементы массива:' ); for i:=1 to N do read ( A[i] ); nMax:= 1; for i:= 2 to N do if A[i] > A[nMax] then nMax:= i; write('A[',nMax,']=',A[nMax]) end. Программа>>>>>>
13 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 13 «A»: Заполнить массив случайными числами и найти минимальный и максимальный элементы массива и их номера. Пример: Массив: Минимальный элемент: A[1]=1 Максимальный элемент: A[5]=5 «B»: Заполнить массив случайными числами и найти два максимальных элемента массива и их номера. Пример: Массив: Максимальный элемент: A[1]=5 Второй максимум: A[2]=5
14 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 14 «C»: Введите массив с клавиатуры и найдите (за один проход) количество элементов, имеющих максимальное значение. Пример: Массив: Максимальное значение 5 Количество элементов 3
15 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Реверс массива N-3N-2N-1N N-3N-2N-1N «Простое» решение: for i:= 1 to N do поменять местами A[i] и A[N+1-i] for i:= 1 to N do поменять местами A[i] и A[N+1-i] N div 2 Что плохо? ? остановиться на середине!
16 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Реверс массива 16 for i:= 1 to N div 2 do begin c:= A[i]; A[i]:= A[N+1-i]; A[N+1-i]:= c; end; for i:= 1 to N div 2 do begin c:= A[i]; A[i]:= A[N+1-i]; A[N+1-i]:= c; end; *Как обойтись без переменной c ? ?
17 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, program arrReverse; const N = 5; var A: array[1..N] of integer; i, c: integer; begin writeln ( 'Введите элементы массива:' ); for i:=1 to N do read ( A[i] ); for i:= 1 to N div 2 do begin c:= A[i]; A[i]:= A[N+1-i]; A[N+1-i]:= c end; writeln ( 'После реверса: ' ); for i:=1 to N do write ( A[i], ' ' ); end. Программа>>>>>>
18 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, N-3N-2N-1N Циклический сдвиг элементов N-3N-2N-1N «Простое» решение: c:= A[1]; for i:= 1 to N-1 do A[i]:= A[i+1] A[N]:= c; c:= A[1]; for i:= 1 to N-1 do A[i]:= A[i+1] A[N]:= c; Что плохо? ? Почему не до N ? ?
19 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, program arrShift; const N = 5; var A: array[1..N] of integer; i, c: integer; begin writeln ( 'Введите элементы массива:' ); for i:=1 to N do read ( A[i] ); c:= A[1]; for i:= 1 to N-1 do A[i]:= A[i+1]; A[N]:= c; writeln ( 'После сдвига влево: ' ); for i:=1 to N do write ( A[i], ' ' ); end. Программа >>>>>>
20 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 20 «A»: Заполнить массив случайными числами и выполнить циклический сдвиг элементов массива вправо на 1 элемент. Пример: Массив: Результат: «B»: Массив имеет четное число элементов. Заполнить массив случайными числами и выполнить реверс отдельно в первой половине и второй половине. Пример: Массив: Результат:
21 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 21 «C»: Заполнить массив случайными числами в интервале [- 100,100] и переставить элементы так, чтобы все положительные элементы стояли в начала массива, а все отрицательные и нули – в конце. Вычислите количество положительных элементов. Пример: Массив: Результат: Количество положительных элементов: 3
22 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Отбор нужных элементов 22 «Простое» решение: Задача. Отобрать элементы массива A, удовлетворяющие некоторому условию, в массив B. for i:= 1 to N do if условие выполняется для A[i] then B[i]:= A[i]; for i:= 1 to N do if условие выполняется для A[i] then B[i]:= A[i]; Что плохо? ? A 12?34??46 B выбрать чётные элементы
23 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Отбор нужных элементов A ??? B выбрать чётные элементы count:= 0; { счётчик } for i:= 1 to N do if A[i] mod 2 = 0 then begin count:= count + 1; end; count:= 0; { счётчик } for i:= 1 to N do if A[i] mod 2 = 0 then begin count:= count + 1; end; for i:= 1 to do write(B[i], ' '); for i:= 1 to do write(B[i], ' '); count Как вывести на экран? ? Если A и B – один и тот же массив? ? B[count]:= A[i];
24 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, program arrSelect; const N = 5; var A, B: array[1..N] of integer; i, count: integer; begin writeln ( 'Введите элементы массива:' ); for i:=1 to N do read ( A[i] ); count:=0; for i:= 1 to N do if A[i] mod 2 = 0 then begin count:= count + 1; B[count]:= A[i]; end; writeln ( 'Чётные элементы: ' ); for i:=1 to count do write ( B[i], ' ' ); end. Программа>>>>>>
25 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 25 «A»: Заполнить массив случайными числами в интервале [-10,10] и отобрать в другой массив все чётные отрицательные числа. Пример: Массив А: Массив B: «B»: Заполнить массив случайными числами в интервале [0,100] и отобрать в другой массив все простые числа. Используйте логическую функцию, которая определяет, является ли переданное ей число простым. Пример: Массив А: Массив B: 13 47
26 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 26 «C»: Заполнить массив случайными числами и отобрать в другой массив все числа Фибоначчи. Используйте логическую функцию, которая определяет, является ли переданное ей число числом Фибоначчи. Пример: Массив А: Массив B: 13 34
27 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ 163, г. Санкт-Петербург ЕРЕМИН Евгений Александрович к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь
28 Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Источники иллюстраций иллюстрации художников издательства «Бином» 3. авторские материалы
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.