|
|||||||
|
Удаление и вставка членов последовательности
Пример 1.15. Дана последовательность натуральных чисел X 1 X2 , ..., XN и натуральное число А. Найти и удалить из последовательности элементы, рапные А. Наиболее просто эта задача решается с введением дополнительного индекса К, определяющего новое место элементов последовательности после удаления требуемых (рис. 1.20). Пример 1.16. Дана упорядоченная по возрастанию последовательность попарно различных натуральных чисел Х1,X 2,..., X N и число А. Вставить в эту последовательность число А, не изменяя ее упорядоченности. Для решения задачи требуется организовать два цикла: один для определения места, куда необходимо вставить число А, а второй -для перестановки элементов с этого места и до конца последовательности на соседние места. При этом необходимо обращать внимание на то, чтобы не "затереть" нужные элементы последовательности, для чего следует просматривать и раздвигать последовательность от последнего элемента. Схема алгоритма без использования специальных способов сокращения числа сравнений (например, деления отрезка поиска пополам), приведена на рис. 1.21. Вычисление степенных многочленов (по схеме Горнера) типа Y = A1*XN + A2*XN-1+A3-XN-2+...
Схема Горнера основана на изменении вида представления степенного многочлена, исключающего операции возведения в степень: Y = (...(A1*X + A2)*X + A3 )*X+...+AN.l)*X + AN)*X+ AN+1 например, Y = ((((5 *Х - 8)*X + 3)*X + 9)* X - 4). Обозначив через Y арифметическое выражение в любых внутренних скобках и используя операцию присваивания: Y= Y*X + А1, легко получим выражение в смежных внешних скобках. При этом для получения результата приведенная операция должна повториться в цикле N раз при изменении переменной цикла I = 2,3,..., N+1 и начальном значении Y = A,.Схема алгоритма вычисления значения степенного многочлена по схеме Горнера представлена на рис. 1.22. Здесь коэффициенты многочлена заданы в виде массива, содержащего N+1 элемент. Начальное значение переменной Y, определенное перед началом цикла, равно коэффициенту А,. Если в многочлене отсутствуют члены с некоторыми степенями переменной X, то соответствующие элементы массива коэффициентов задаются при вводе равными нулю. Вычисление суммы членов бесконечного ряда с заданной точностью является типичной задачей, алгоритм которой содержит итерационный цикл, поскольку заранее неизвестно, какой член ряда будет добавлен последним для достижения нужной точности вычислений. Пример 1.17. Вычислить сумму членов бесконечного ряда
Вариант алгоритма решения задачи представлен на рис.1.23. В алгоритме для получения требуемой суммы вначале вычисляется значение очередного члена ряда (h) и, после его сравнения со значением заданной погрешности, с использованием операции присваивания s =s + h прибавляется к сумме предыдущих членов ряда. Вычисления прекращаются, как только значение очередного члена ряда по абсолютной величине окажется меньше заданной погрешности e. При вычислении в подобных алгоритмах целесообразно воспользоваться рекуррентным соотношением, позволяющим очередное значение члена ряда hN определять из предыдущего hN-1, путем его умножения на некоторое приращение Dh. Приращение Dh несложно получить, разделив hN на hN-1. Например, для приведенного ряда имеем
‡агрузка...
Учитывая, что N!=(N-1)!-N, xN=x(N-1)-x и (-1)N+1 = (-1)N *(-1), после элементарных сокращений получаем Dh =-x/N. Следовательно, каждый последующий член N рассматриваемого ряда может быть получен простым перемножением значения предыдущего члена ряда на найденное приращение с использованием при этом операции присваиваниях h= -x/N*h. Как видим, эта операция избавила нас от необходимости вычисления факториала N! и N-й степени числа XN, что существенно уменьшило количество производимых операций и повысило точность вычислений. Организация вложенных циклов. Иногда цикл, называемый в данном случае внешним, может содержать в себе один или несколько внутренних, образуя так называемые вложенные циклы. Каждый из вложенных циклов, в свою очередь, может содержать вложенные в него циклы. Как внешние, так и внутренние циклы организуются по общим правилам организации циклических алгоритмов. Переменные внешнего и внутреннего цикла должны быть разными и изменяться таким образом, чтобы для каждого значения переменной внешнего цикла переменная внутреннего цикла приняла все оговоренные в цикле значения. При организации вложенных циклов необходимо строго следить за тем, чтобы цикл, начинающийся позже, заканчивался раньше. При этом передача управления "вовнутрь" цикла запрещена. Выход из цикла возможен после его естественного завершения или досрочно, например в результате проверки некоторого условия. Пример 1.18. По окончании приемных экзаменов был составлен список группы абитуриентов, содержащий 25 фамилий и экзаменационные оценки каждого абитуриента по 5 дисциплинам. Требуется определить средний балл каждого абитуриента. Таблицу оценок 25 абитуриентов по 5 предметам представим в виде двумерного массива А25;, содержащего 25 строк и 5 столбцов:
Задача сводится к определению среднего арифметического значения элементов каждой строки матрицы, для чего предварительно необходимо вычислить сумму значений элементов
|
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.005 сек.) |