Главная страница Случайная лекция Мы поможем в написании ваших работ! Порталы: БиологияВойнаГеографияИнформатикаИскусствоИсторияКультураЛингвистикаМатематикаМедицинаОхрана трудаПолитикаПравоПсихологияРелигияТехникаФизикаФилософияЭкономика Мы поможем в написании ваших работ! |
Программа. Фрагмент программы, реализующий сдвиг и вставку
Begin Var Type Программа. Поиск максимума-минимума Фрагмент программы, реализующий сдвиг и вставку. Вставка-удаление элемента Begin Var Type vector = ARRAY [1..N] of integer; a:vector; K, kol, i: integer; {К – текущая длина массива} {здесь функция ввода VVOD} {здесь функция вывода VIVOD} {--здесь ввод массива, К – текущая длина--} z:=0; for i:=1 to k do {для каждого элемента массива} if a[i]<0 then z:=i; vivod(a,k);{вывод массива для визуальной проверки правильности работы} if z=0 then writeln(‘отрицательных элементов нет’) else writeln(‘Последний отрицательный – ‘,a[z],’, его позиция - ‘,z); end. Примечание. Если требуется найти номер первого элемента, удовлетворяющего условию, то проход нужно организовать от конца к началу (for i:=k downto 1 do…). Пример. Дан массив действительных чисел А(N). Вставить число d в данный массив в качестве k-го элемента. Решение. Сначала необходимо освободить k-ю позицию. Для этого нужно сдвинуть элементы от N до k вправо на 1 позицию. Поэтому для каждого организуем перестановку его на следующую позицию. При этом увеличивается длина массива и становится N+1. L – текущая длина массива. for i:=L downto N doa[i+1]:=a[i]; a[k]:=d; N:=N+1; Для удаления необходимо организовать сдвиг элементов от k+1 до N влево на одну позицию. Длина массива становится N-1. Пример 1. Дан массив действительных чисел А(N). Найти наибольший элемент массива и его порядковый номер. Решение. В данной задаче также нужно для каждого элемента массива (for i:=1 to k do…) выполнить сравнение с текущим значением максимума - дополнительной переменной max, которая хранит максимальное значение среди уже просмотренных элементов. После завершения перебора элементов в max остается максимальное значение. Исходное значение max – это значение первого элемента массива. Для хранения порядкового номера максимума используем переменную imax, которая изменяет значение одновременно с max. Program min_max; const n=100; {максимальное число элементов массива} vector = ARRAY [1..N] of real; a:vector; K,i: integer; {К – текущая длина массива} Max:real; {здесь функция ввода VVOD} {здесь функция вывода VIVOD} {--здесь ввод массива, К – текущая длина--} max:=a[1];imax:=1; for i:=2 to k do {для каждого элемента массива} if a[i]>max then begin max:=a[i]; imax:=I end; vivod(a,k);{вывод массива для визуальной проверки правильности работы} writeln(‘Максимум =’,max:6:2) writeln(‘Его порядковый номер - ‘,imax); end. Примечание. Если требуется найти минимальное значение элемента, то в операторе условия знак > меняется на <. Пример 2. Дан массив натуральных чисел А(N). Среди элемент массива, в цифровой записи которых есть цифра 3, найти наибольший. Определить также его порядковый номер. Решение. Эта задача требует модификации базового алгоритма поиска максимума, т.к. для каждого элемента массива выполнять проверку на наличие цифры 3 в его записи. Если проверка успешна, то элемент нужно сравнивать с максимумом. Но в начале работы неизвестно, какой элемент будет исходным значением максимума. Это так потому, то неизвестен порядковый номер элемента, содержащего цифру 3. Эта особенность требует изменений в алгоритме поиска максимума. Можно заметить, что обработка первого элемента с цифрой 3 в записи отличается от обработки остальных: первый мы просто присваиваем переменной max, а все остальные – сравниваем с ней. Поэтому в цикле перед сравнением с max нужно проверить - это первый элемент или нет. Поэтому введем логическую переменную - флажок F, которая имеет значение true, пока не будет найден первый элемент и false – иначе. Изменить свое значение она должна только с true на false, причем одновременно с присвоением переменной max исходного значения. Program min_max1; const n=100; {максимальное число элементов массива}
Дата добавления: 2014-03-11; просмотров: 312; Нарушение авторских прав Мы поможем в написании ваших работ! |