Задача 1. Даны массивы A[1: n], B[1: m]. Вставить элементы массива B в массив A после его минимального элемента. A B nmin A nmin Постановка задачи Дано: n, A[1: n], m, B[1: m] Результат: A[1: n+m] При : n>0, n<=lmax, m>0, m<=lmax Связь: A[j]=A[i], i=n, nmin+1, j=n+m, nmin+m+1 A[nmin+i]=B[i], i=1, m , где nmin – номер минимума.
алг «план действий» нач ввод(n, A[1: n], m, B[1: m]) поиск номера минимума в массиве A сдвиг вправо элементов массива A, расположенных после минимального вставка элементов массива B в массив A изменение длины массива A кон
Сдвиг элементов массива A вправо можно осуществлять различными способами. 1. j: = n+m {номер позиции, 2. {i – номер сдвигаемого на которую элемента} происходит сдвиг } цикл от i: =1 до n - nmin цикл от i: =n до nmin +1 A[n+m-i+1]: =A[n-i+1] шаг -1 Кц A[j]: =A[i] 3. Цикл от i: =n до j: = j-1 nmin+1 шаг -1 кц A{i+m]: =A[i] кц
Алг «вставка» Нач ввод(n, A[1: n}, m. B[1: m]) nmin: =1 цикл от i: =2 до n если A[i] < A[nmin] то nmin: =i все кц цикл от i: =n до nmin +1 шаг -1 A[i+m]: =A[i] Кц цикл от i: =1 до m A[nmin+i]: =B[i] Кц Вывод (A[1: n+m]) кон
Итерационные алгоритмы • Итерация (лат. iteratio — повторение) в математике - одно из ряда повторений какойлибо математической операции, использующее результат предыдущей аналогичной операции. • Итерация в программировании - это организация обработки данных, при которой действия повторяются многократно, не приводя при этом к вызовам самих себя (т. е. нет рекурсии). Один шаг цикла также называется итерацией.
Задача 1. Вычислить сумму членов ряда Дано: x, Eps Результат: z При : Eps>0 Связь: см. формулу в условии.
алг «итерация 1» нач ввод(x, Eps) z: =0 {сумма членов ряда} i: =1 {номер слагаемого} цикл f: =cos(ix)/i 2 {слагаемое} z: =z+f {вычисление суммы} i: =i+1 {увеличение номера шага} до f≤Eps кц вывод(z) кон
Трассировка Z=0 i=1, f=cos(x), z=cos(x) i=2, f=cos(2 x)/4, z=cos(x) + cos(2 x)/4 И т. д.
Задача 2. Вычислить сумму членов ряда Здесь формула для члена ряда не дана. Выведем ее:
Дано: x, n, Eps Результат: y При : Eps>0, x≠ 0 Связь: .
алг «итерация 2» нач ввод(x, Eps, n) y: =xn{сумма членов ряда} z: =y{слагаемое} i: =2{номер слагаемого} цикл z: =z*(i-1)/(ix) {слагаемое} y: =z+y {вычисление суммы} i: =i+1 {увеличение номера шага} до z<Eps кц вывод(y) кон
Задача 3. Вычислить сумму членов ряда
Выведем рекуррентное отношение Домашнее задание. Написать два алгоритма.