К.Ю. Поляков, Е.А. Ерёмин, 2013 1 Программирование на языке Паскаль § 63. Алгоритмы обработки массивовАлгоритмы обработки массивов.

Презентация:



Advertisements
Похожие презентации
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 64. Сортировка 1.
Advertisements

К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 58. Циклические алгоритмы 1.
К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 62. МассивыМассивы.
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 58. Циклические алгоритмы 1.
К. Поляков, Программирование на языке Паскаль Часть III Тема. Массивы.
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 66. Символьные строки 1.
К. Поляков, Программирование на языке Паскаль Часть II Тема: Поиск максимального элемента массива.
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 64. Сортировка 1.
1 Случайные числа на языке Паскаль Тип величины Диапазон значений Паскаль Веществен ный [ 0, 1 ]x : = random [ 0, a]x : = random * a [ a, b ]x : = random.
К.Ю. Поляков, Е.А. Ерёмин, 2013 Программирование на языке Паскаль § 57. Ветвления 1.
Программирование на языке Паскаль. Часть II К. Поляков, Поиск в массиве 1 Задача – найти в массиве элемент, равный X, или установить, что его.
1 Программирование на языке Паскаль Обработка массивов.
1 Программирование на языке Паскаль Тема 2. Максимальный элемент массива.
Программирование на языке Паскаль. Часть II К. Поляков, Сумма выбранных элементов 1 Задача: заполнить массив случайными числами в интервале [-10,10]
1 Обработка массивов. 2 Реверс массива Задача: переставить элементы массива в обратном порядке. Алгоритм: поменять местами A[1] и A[N], A[2] и A[N-1],
1 Программирование на языке Паскаль Максимальный элемент массива.
Задача: определить является ли простым заданное число.
Решение задач с использованием массивов
Урок информатики 9 физико-математический класс.
Массивы Массивы Ввод и вывод массива Максимальный элемент массива Обработка массивов Сортировка массивов Поиск в массивеМассивыВвод и вывод массиваМаксимальный.
Транксрипт:

К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 63. Алгоритмы обработки массивов Алгоритмы обработки массивов

К.Ю. Поляков, Е.А. Ерёмин, Программирование на языке Паскаль § 63. Алгоритмы обработки массивов 2

Алгоритмизация и программирование, Паскаль, 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) должно быть первым!

Алгоритмизация и программирование, Паскаль, 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. Программа>>>>>>

Алгоритмизация и программирование, Паскаль, 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 досрочный выход из цикла

Алгоритмизация и программирование, Паскаль, 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. Программа>>>>>>

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 7 «A»: Заполните массив случайными числами в интервале [0,5]. Введите число X и найдите все значения, равные X. Пример: Массив: Что ищем: 2 Нашли: A[2]=2, A[5]=2 Пример: Массив: Что ищем: 6 Ничего не нашли.

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 8 «B»: Заполните массив случайными числами в интервале [0,5]. Определить, есть ли в нем элементы с одинаковыми значениями, стоящие рядом. Пример: Массив: Есть: 3 Пример: Массив: Нет

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 9 «C»: Заполните массив случайными числами. Определить, есть ли в нем элементы с одинаковыми значениями, не обязательно стоящие рядом. Пример: Массив: Есть: 3, 2 Пример: Массив: Нет

Алгоритмизация и программирование, Паскаль, 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; Что можно улучшить? ? Как найти его номер? ?

Алгоритмизация и программирование, Паскаль, 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]

Алгоритмизация и программирование, Паскаль, 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. Программа>>>>>>

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 13 «A»: Заполнить массив случайными числами и найти минимальный и максимальный элементы массива и их номера. Пример: Массив: Минимальный элемент: A[1]=1 Максимальный элемент: A[5]=5 «B»: Заполнить массив случайными числами и найти два максимальных элемента массива и их номера. Пример: Массив: Максимальный элемент: A[1]=5 Второй максимум: A[2]=5

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 14 «C»: Введите массив с клавиатуры и найдите (за один проход) количество элементов, имеющих максимальное значение. Пример: Массив: Максимальное значение 5 Количество элементов 3

Алгоритмизация и программирование, Паскаль, 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 Что плохо? ? остановиться на середине!

Алгоритмизация и программирование, Паскаль, 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 ? ?

Алгоритмизация и программирование, Паскаль, 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. Программа>>>>>>

Алгоритмизация и программирование, Паскаль, 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 ? ?

Алгоритмизация и программирование, Паскаль, 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. Программа >>>>>>

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 20 «A»: Заполнить массив случайными числами и выполнить циклический сдвиг элементов массива вправо на 1 элемент. Пример: Массив: Результат: «B»: Массив имеет четное число элементов. Заполнить массив случайными числами и выполнить реверс отдельно в первой половине и второй половине. Пример: Массив: Результат:

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 21 «C»: Заполнить массив случайными числами в интервале [- 100,100] и переставить элементы так, чтобы все положительные элементы стояли в начала массива, а все отрицательные и нули – в конце. Вычислите количество положительных элементов. Пример: Массив: Результат: Количество положительных элементов: 3

Алгоритмизация и программирование, Паскаль, 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 выбрать чётные элементы

Алгоритмизация и программирование, Паскаль, 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];

Алгоритмизация и программирование, Паскаль, 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. Программа>>>>>>

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 25 «A»: Заполнить массив случайными числами в интервале [-10,10] и отобрать в другой массив все чётные отрицательные числа. Пример: Массив А: Массив B: «B»: Заполнить массив случайными числами в интервале [0,100] и отобрать в другой массив все простые числа. Используйте логическую функцию, которая определяет, является ли переданное ей число простым. Пример: Массив А: Массив B: 13 47

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Задачи 26 «C»: Заполнить массив случайными числами и отобрать в другой массив все числа Фибоначчи. Используйте логическую функцию, которая определяет, является ли переданное ей число числом Фибоначчи. Пример: Массив А: Массив B: 13 34

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Конец фильма ПОЛЯКОВ Константин Юрьевич д.т.н., учитель информатики ГБОУ СОШ 163, г. Санкт-Петербург ЕРЕМИН Евгений Александрович к.ф.-м.н., доцент кафедры мультимедийной дидактики и ИТО ПГГПУ, г. Пермь

Алгоритмизация и программирование, Паскаль, 10 класс К.Ю. Поляков, Е.А. Ерёмин, Источники иллюстраций иллюстрации художников издательства «Бином» 3. авторские материалы