ВУЗ:
Составители:
Рубрика:
47
B=(2N
2
+1)*C*H
НАЧАЛО
КОНЕЦ
S:=1; H:=1;
N:=0; C:=1;
Печать
Ввод X, E
|B| > E
нет
да
N:=N+1;
H=H*
x
2
(2N–1)2N
C:=
–
C;
S:=S+B;
Печать
Сумма ряда S
Число членов N
C =
()
–1
n
; H =
x
2n
()
2n !
; B =
()
2n
2
+ 1 *C*H.
Возведение в степень для некоторых алгоритмических языков
вычисляется с помощью логарифмов, поэтому разрешается возводить
отрицательное число в квадрат. Учитывая этот факт, будем рассчитывать
значение C через предыдущее С = – C.
где C =
⎩
⎨
⎧
+1 при n нечетном
, –1 при n четном.
Тогда начальное значение C = 1. Сомножитель H будем вычислять
по рекуррентной формуле.
H = H *
x
2
()
2n – 1 2n
, где под H справа от
знака “=” подразумевается предыдущее значение
H, а под H слева – последующее его значение.
При накоплении произведения начальное
значение H = 1.
Накопление суммы ряда будем
производить в переменной S, используя формулу
S = S + B. За начальное значение S в нашем
примере следует взять 1.
Программа 5
Var x,eps,S,H,B:real;
n,C:integer;
begin writeln(‘Введите переменную и точность
расчета ’);
readln(x,eps);
B:=1; S
:
=1; H
:
=1 n
:
=0; C
:
=1;
while ABS(B)>eps do begin
n
:
=n+1; H
:
=H*SQR(x)/((2*n–1)*(2*n));
C
:
=–C; B
:
= (2*SQR(n)+1)*C*H; S
:
=S+B;
end;
writeln(‘Сумма ряда = ’,S);
writeln(‘ число членов ряда n = ’,n)
End.
Р
исунок 34 Блок-схема
программы №5
48
Пример 12 Итерационный цикл
Для целого положительного десятичного числа n подсчитать сумму
S цифр числа и их количество K. Для целого числа существует две
операции деления n
mod 10 – остаток от деления числа n на 10, и n div 10 –
целая часть от деления числа n на 10.
В начале выделяем количество единиц (пусть n = 32876)
n
mod 10 = 6, n div 10 = 3287. Проверяем, если n div 10 ≠ 0, то вновь
повторяем эти две операции.
Программа 6
Var A, n: longint;
K,S: byte;
begin write('Введите целое
положительное число');
readln(n);
A
:
=n; K
:
=0; S
:
=0;
while n div 10 <> 0 do begin
S
:
=S+n mod 10;
K
:
=K+1;
n
:
=n div 10 end;
writeln('В числе ',A,' количество
цифр = ',K,' их сумма = ',S);
End.
Оператор цикла с постусловием
Repeat
Оператор
Условие выхода
из цикла
Until
;
;
Рисунок 36 Оператор цикла с постусловием
Этот оператор аналогичен предыдущему оператору и отличается от
него тем, что условие проверяется после выполнения очередной итерации
(тем самым гарантируется хотя бы однократное выполнение цикла). Если
НАЧАЛО
КОНЕЦ
A:=n;
K:=0; S:=0
S:=S+n
mod10;
K:=K+1;
n:=n div10
Экран
Ввод n
Экран
S,K
n div10<>0
Рисунок 35 Блок-схема
п
р
ог
р
аммы №6
x 2n Пример 12 Итерационный цикл C = (1)n; H= ; B = (2n2 + 1)*C*H. (2n) ! Для целого положительного десятичного числа n подсчитать сумму Возведение в степень для некоторых алгоритмических языков S цифр числа и их количество K. Для целого числа существует две вычисляется с помощью логарифмов, поэтому разрешается возводить операции деления n mod 10 остаток от деления числа n на 10, и n div 10 отрицательное число в квадрат. Учитывая этот факт, будем рассчитывать целая часть от деления числа n на 10. значение C через предыдущее С = C. В начале выделяем количество единиц (пусть n = 32876) ⎧ +1 при n нечетном где C = ⎨ n mod 10 = 6, n div 10 = 3287. Проверяем, если n div 10 ≠ 0, то вновь ⎩, 1 при n четном. повторяем эти две операции. Тогда начальное значение C = 1. Сомножитель H будем вычислять по рекуррентной формуле. Программа 6 НАЧАЛО НАЧАЛО x2 Экран Var A, n: longint; H=H* , где под H справа от (2n 1) 2n Ввод n K,S: byte; Печать знака = подразумевается предыдущее значение Ввод X, E A:=n; begin write('Введите целое H, а под H слева последующее его значение. K:=0; S:=0 положительное число'); При накоплении произведения начальное S:=1; H:=1; значение H = 1. readln(n); N:=0; C:=1; Экран Накопление суммы ряда будем n div10<>0 S,K A:=n; K:=0; S:=0; производить в переменной S, используя формулу нет while n div 10 <> 0 do begin |B| > E S = S + B. За начальное значение S в нашем S:=S+n mod10; да примере следует взять 1. S:=S+n mod 10; K:=K+1; N:=N+1; Программа 5 n:=n div10 K:=K+1; Var x,eps,S,H,B:real; КОНЕЦ 2 n:=n div 10 end; x n,C:integer; H=H* (2N1)2N Рисунок 35 Блок-схема writeln('В числе ',A,' количество begin writeln(Введите переменную и точность программы №6 цифр = ',K,' их сумма = ',S); расчета ); C:=C; readln(x,eps); End. 2 B=(2N +1)*C*H B:=1; S:=1; H:=1 n:=0; C:=1; Оператор цикла с постусловием while ABS(B)>eps do begin S:=S+B; Repeat Условие выхода n:=n+1; H:=H*SQR(x)/((2*n1)*(2*n)); Оператор Until из цикла ; C:=C; B:= (2*SQR(n)+1)*C*H; S:=S+B; Печать end; ; Сумма ряда S Число членов N writeln(Сумма ряда = ,S); writeln( число членов ряда n = ,n) Рисунок 36 Оператор цикла с постусловием КОНЕЦ End. Этот оператор аналогичен предыдущему оператору и отличается от Рисунок 34 Блок-схема него тем, что условие проверяется после выполнения очередной итерации программы №5 (тем самым гарантируется хотя бы однократное выполнение цикла). Если 47 48
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »