Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Вложенные циклы
Часто возникают ситуации, когда внутри одного цикла необходимо вычислить некоторое значение. И для его вычисления необходимо также организовать цикл. В этом случае применяется вложенность циклов. Вложенные циклы могут быть как арифметическими, так итерационными. При записи программ со структурой вложенных циклов необходимо обращать внимание на правильность размещения внешнего и внутреннего циклов. Одни постановки задач допускают смену мест внешнего и внутреннего циклов, а в других постановках такая система приводит к неправильным результатам. При записи программ со структурой сложенных циклов зона действия внутреннего цикла должна располагаться в зоне действия охватывающего цикла. Рассмотрим пример использования вложенных циклов. Составить программу вычисления значения функции подсчитав первые 10 слагаемых. Для форматирования ввода-вывода с помощью манипуляторов setw и setprecision необходимо подключить библиотеку iomanip.
#include " stdafx.h" #include < iostream> #include < iomanip> #include < math.h>
using namespace std;
void main () { const int N = 10;
float a, x, y, y0;
cout < < " Input a, x: " < < endl; cin > > a > > x;
y = 1;
for (int n = 1; n < = N; n ++) { int nf = 1;
for (int m = 1; m < = n; m ++) nf *= m;
y += pow ( x * log ( a ), n )/ nf; }
y0 = pow ( a, x );
cout < < " Result of iterative calculation: " < < setw ( 9 ) < < \ setprecision ( 5 ) < < y < < endl; cout < < " Result of direct calculation: " < < setw ( 9 ) < < \ setprecision ( 5 ) < < y0 < < endl; }
Рассмотрим переменные и порядок вычисления данного примера. Назначение переменных a и x понятно из формулы. nf – переменная для хранения факториала. y – переменная для хранения текущего значения суммы ряда. y0 – переменная для хранения значения функции вычисленного на основе стандартных математических функций.
В начале зададим число повторений цикла N и введем значения a и x с клавиатуры. Затем присваиваем начальное значение функции y (первое слагаемое ряда равное 1). Организуем внешний цикл для изменения значений n. Внутри тела цикла задаем начальное значение nf равное 1. При каждой итерации внешнего цикла оно будет сбрасываться обратно в 1. Далее организуем вложенный (внутренний) цикл для вычисления факториала: будем умножать nf на значение счетчика цикла m. При этом m будет каждый раз увеличиваться на 1 до тех пор, пока m не станет равным n, т.е. получим nf = 1*2*3*…*n. Затем вычисляем новое значение функции y (суммы ряда) путем добавления нового слагаемого из формулы. Далее, по завершению цикла, вычисляем значение функции через стандартные функции языка C++ и выводим полученные значения на экран, отформатировав вывод при помощи манипуляторов потокового ввода-вывода.
|