float x=1+p, x1=x*x;
int i;
for (i=1; i<10; i++ )
{
c= - c*x1;
s= s+ c / i;
}
printf( “Сумма чисел равна: %10.2f ”,s);
}
В приведенной программе вспомогательные переменные x, x1 используются дляуменьшения общего объема вычислений.
2. Вычисление произведения п сомножителей.
Требуется вычислить
n
P= P xi =x1*x2*…*xn.
i= 1
Эта задача также сводится к организации цикла по i . При каждом прохождении цикла произведение (Р) умножается на очередной член. До входа в цикл нужно задать Р=1 (рис. 3).
Рис. 3 Рис. 4
К этому алгоритму сводится задача вычисления факториала Р=п! (xi=i, i— натуральное). Программа 2.3 реализует этот алгоритм при n=6.
Программа 2.3
void main()
{
const int n=6;
float p=1;
for (int i=2;i<=n;i++ )
p=p*i;
printf( “Факториал числа %i равен: %10.2f ”, n, p);
}
Начальное значение управляющей переменной цикла i в операторе for полагается равным 2, чтобы исключить лишнюю операцию (умножение 1 на 1).
3. Табулирование функции. Требуется вычислить функцию y=f(x) на отрезке [а, b] с шагом h.
Для решения задачи нужно предварительно определить число точек, для которых требуется вычислить функцию
(n=(b-a)/h+1) и организовать цикл для вычисления значений функции в каждой точке. Печать получающихся значений нужно осуществлять в цикле каждый раз после вычисления значения функции в очередной точке (рис. 4).
Программа 2.4 реализует приведенный алгоритм табулирования для получения таблицы функции у=х sin х при изменении х на отрезке от -pдо p с шагом p/5 .
Программа 2.4
#include <iostream.h>
#include <math.h>
#include <conio.h>
int main(int argc, char* argv[])
{
const float Pi=3.14159;
float x, y;
cout<<"Таблица функции y=xsin(x)\n";
cout<<"--------------------\n";
cout<<" x | y \n" ;
cout<<"--------------------\n";
for (x=-Pi; x<=Pi; x+= Pi/5)
{
y=x*sin(x);
cout.width(10); // устанавливает ширину поля вывода для значений
cout.precision(2); // устанавливает число десятичных знаков вещественных значений
cout<< x<<"|"<<y<< endl;
}
cout<<"---------------------\n";
getch();
return 0;
}
4. Приближенное вычисление площади. Алгоритм приближенного вычисления площади геометрической фигуры (линии, ограничивающие фигуру, заданы аналитически) является объединением алгоритмов суммирования и табулирования.
Пусть требуется вычислить приближенно площадь фигуры, ограниченной графиком функции y=f(x), осью абсцисс и двумя прямыми: х=а и х=b(f(x)>=0). Разобьем отрезов [a,b] на n частей и вычислим площадь фигуры приближенно как сумму п прямоугольников с основаниями h =(b-a)/п и высотами, определяемыми значением функции y=f(x) в середине соответствующего прямоугольника.
Программа 2.5 реализует приведенный алгоритм для вычисления площади одной арки синусоиды (а=0, b=p, п=10).
Программа 2.5
#include <iostream.h>
#include <math.h>
#include <conio.h>
int main(int argc, char* argv[])
{
const float Pi=3.14159;
float s=0, h=Pi/10;
for (float i=1; i<=10; i++)
s= s+sin((i-1)*h+h/2)*h;
cout<<"Площадь одной арки синусоиды "<<s;
getch();
return 0;
}
Структуру цикла for… рекомендуется использовать при организации циклов с известным до выполнения цикла числом его повторений (цикл по счетчику). Если число повторений цикла до его выполнения неизвестно, то рекомендуется использовать структуру цикла while… или do….
Пример. Мощность радиоактивного излучения пропорциональна концентрации радиоактивного вещества. Период полураспада одного из изотопов углерода составляет 8 дней. В начальный момент времени мощность излучения составляет 2 рентгена/час. Определить, через сколько дней мощность излучения снизится до безопасной для человека величины 0,15 рентгена/час.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.