Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / C++ / C++ / 03_циклы_a5.doc
Скачиваний:
50
Добавлен:
17.04.2013
Размер:
257.02 Кб
Скачать

Оператор цикла do-while

В операторе цикла do-while условие повторения проверяется после каждого прохождения тела цикла, т.е. это цикл с последующим условием. Следовательно, цикл do-while выполняется по крайней мере один раз. Этот цикл повторяется до тех пор, пока выполняется условие, проверяемое в конце цикла.

Форма его записи:

do {оператор или группа операторов}

while (условие);

Даже в случае, когда тело цикла содержит единственный оператор, фигурные скобки следует писать во избежание неправильной трактовки компилятором служебного слова do.

Рис. 3.2. Обозначение цикла do while в схеме алгоритма.

Пример 3.2.

. . .

do {ch=getchar ( ); // принимать с клавиатуры символы

putchar (ch); // и выводить их на экран

}while (ch != ' \n' ); // пока не будет введена пустая посылка

. . .

Оператор цикла while

Оператор цикла while является еще одной разновидностью условного цикла, повторяющегося до тех пор, пока выполняется условие, проверяемое перед началом каждой итерации цикла. Таким образом, это цикл с предварительным условием.

Форма записи:

while (условие) {последовательность операторов}

Рис. 3.3. Обозначение цикла while в схеме алгоритма.

Пример 3.3.

. . .

int index=2;

while (index ++<5) cout << "Желаю удачи!" <<endl;

. . .

Вычисление значения с заданной точностью методом прямоугольников

Для вычисления первого приближения интеграла разделим отрезок [a,b], отвечающий пределам интегрирования (рис.3.4), на n равных частей (n = 4), определим значения xi = a+h*i-h/2; h = (b-a)/n.

Вычислим площадь одного прямоугольника si=h*f(xi). Суммаsiплощадей полученных прямоугольников является приближенным значением интеграла: .

Однако одно приближение не позволяет оценить точность, с которой вычислено значение интеграла, необходимо найти следующее приближение. Для этого увеличим n в два раза, т.е. n = 2n. Аналогично найдем .

Рис.3.4 Вычисление интеграла методом прямоугольников

Требуется вычислить значение интеграла с точностью , поэтому проверим условие |S1 - S2|<. Если условие выполняется, то S2 принимается за искомое значение интеграла; если не выполняется, то последнее выполненное значение S2 считается предыдущим, т.е. S1 = S2. После этого удвоим число точек деления отрезка и вычислим новое значение S2. Процесс удвоения n и вычисления S2 будем продолжать до тех пор, пока модуль разности S1 и S2 не станет меньше.

Пример 3.4. Вычисление интеграла методом прямоугольников.

#include <iostream.h>

#include <conio.h>

#include <math.h>

#define Pi 3.14159

int main()

{unsigned long i, n = 4;

float a,b,x,h,S1,S2,eps,exact;

a = 0; b = 3/(2*Pi); eps = 0.001;

S1 = 0;

h = (b – a)/n;

//Вычисляем сумму в первом приближении

for(i= 1;i<=n;i++)

{ x = a + i*h – h/2;

S1 = S1+ (1/(5–3*cos(x)))*h;

}

//Вычисляем текущее приближение и сравниваем его с предыдущим

do {n = 2*n;

h = (b – a)/n;

S2 = 0;

for (i = 1; i<=n; i++)

{x = a + i*h – h/2;

S2 = S2 + (1/(5–3*cos(x)))*h;

}

exact = fabs(S1 – S2);

S1 = S2;

} while(exact>eps);

cout << "S = " << S2;

return0;

}

Соседние файлы в папке C++