For19. Дано целое число N (> 0). Найти произведение
N! = 1·2·…·N
(N–факториал). Чтобы избежать целочисленного переполнения, вычислять это произведение с помощью вещественной переменной и вывести его как вещественное число.
var
i, N: integer;
factorial: real;
begin
write('N = ');
readln(N);
{ Начальное значение факториала (0! = 1): }
factorial := 1;
{ Чтобы вычислить i!, надо предыдущее значение
умножить на i, для всех i от 1 до N: }
for i := 1 to N do
factorial := factorial * i;
writeln;
writeln(' ', N, '! = ', factorial);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308 For20. Дано целое число N (> 0). Используя один цикл, найти сумму
1! + 2! + 3! + … + N!
(выражение N! — N–факториал — обозначает произведение всех целых чисел от 1 до N: N! = 1·2·…·N). Чтобы избежать целочисленного переполнения, проводить вычисления с помощью вещественных переменных и вывести результат как вещественное число.
var
i, N: integer;
factorial, S: real;
begin
write('N = ');
readln(N);
factorial := 1; { <== Начальное значение факториала (0! = 1) }
S := 0; { <== Начальное значение суммы факториалов }
{ Чтобы вычислить сумму факториалов 1! + ... + i!, надо к сумме
1! + ... + (i - 1)! добавить i!, и всё это для i от 2 до N: }
for i := 1 to N do
begin
factorial := factorial * i; { <== Находим i! }
S := S + factorial { <== Сумму увеличиваем на i! }
end;
writeln;
writeln(' 1! + ... + ', N, '! = ', S);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308
For21. Дано целое число N (> 0). Используя один цикл, найти сумму
1 + 1/(1!) + 1/(2!) + 1/(3!) + … + 1/(N!)
(выражение N! — N–факториал — обозначает произведение всех целых чисел от 1 до N: N! = 1·2·…·N). Полученное число является приближенным значением константы e = exp(1).
var
i, fact, N: integer;
Sum: real;
begin
write('N = ');
readln(N);
Sum := 1; { <== начальная сумма равна 1 }
fact := 1; { 0! = 1 }
for i := 1 to N do
begin
fact := fact * i; { <== находим i! }
Sum := Sum + 1 / fact { находим сумму }
end;
writeln;
writeln('Значение суммы: ', Sum);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308 For22. Дано вещественное число X и целое число N (> 0). Найти значение выражения
1 + X + X2/(2!) + … + XN/(N!)
(N! = 1·2·…·N). Полученное число является приближенным значением функции exp в точке X.
var
i, N: integer;
Sum, a, x: real;
begin
write('x = ');
readln(x); { <-- Вводим вещественное x }
Sum := 1; { <== Начальная сумма }
{ Далее выполнять программу имеет
смысл только в случае x ≠ 0: }
if x <> 0 then
begin
write('N = ');
readln(N); { <-- Вводим целое количество N }
a := 1; { <== Первое слагаемое }
for i := 1 to N do
begin
{ Предыдущее значение слагаемого умножаем на x, а потом
делим на i. В результате мы получим последовательность
значений для 1-го, 2-го, ..., N-го членов:
x, x^2/2!, x^3/3!, ..., x^N/N! }
a := a * x / i;
Sum := Sum + a { <== Находим сумму }
end
end;
writeln;
writeln('Значение суммы: ', Sum);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308 For23. Дано вещественное число X и целое число N (> 0). Найти значение выражения
X − X3/(3!) + X5/(5!) − … + (−1)N-1·X2·N-1/((2·N-1)!)
(N! = 1·2·…·N). Полученное число является приближенным значением функции sin в точке X.
var
i, N: integer;
Sum, a, x, y: real;
begin
write('x = ');
readln(x);
Sum := x; { <== Начальная сумма равна первому члену x }
{ Далее выполнять программу имеет смысл только при x ≠ 0
(в противном случае все слагаемые равны 0): }
if x <> 0 then
begin
write('N = ');
readln(N);
a := x; { <== Первое слагаемое в данной сумме }
y := sqr(x); { <== Запоминаем x в квадрате }
for i := 1 to N - 1 do
begin
{ Для вычисления i-го значения предыдущее значение (с
противоположным знаком) умножаем на x в квадрате (число y) и
делим на произведение последовательных натуральных чисел: }
a := -a * y / (2 * i * (2 * i + 1));
Sum := Sum + a { <== Находим сумму }
end
end;
writeln;
writeln('Значение суммы: ', Sum:0:5);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**function** Sqr(x: real): real;
: Возвращает квадрат числа x. For24. Дано вещественное число X и целое число N (> 0). Найти значение выражения
1 − X2/(2!) + X4/(4!) − … + (−1)N-1·X2·N-2/((2·N-2)!)
(N! = 1·2·…·N). Полученное число является приближенным значением функции cos в точке X.
var
i, N: integer;
Sum, a, x, y: real;
begin
write('x = ');
readln(x);
Sum := 1; { <== Начальное значение суммы }
{ Дальнейшие вычисления производим при x ≠ 0, так как в противном
случае искомая сумма равна 1 (все слагаемые равны 0): }
if x <> 0 then
begin
write('N = ');
readln(N);
y := sqr(x); { <== Вычисляем x в квадрате }
a := 1; { <== первое слагаемое в данной сумме }
for i := 1 to N - 1 do
begin
{ Для вычисления i-го значения предыдущее значение (с
противоположным знаком) умножаем на x в квадрате (число y) и
делим на произведение последовательных натуральных чисел: }
a := -a * y / ((2 * i - 1) * 2 * i);
Sum := Sum + a { <== Увеличиваем сумму }
end
end;
writeln;
writeln('Значение суммы: ', Sum:0:5);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**function** Sqr(x: real): real;
: Возвращает квадрат числа x. For25. Дано вещественное число X (|X| ≤ 1) и целое число N (> 0). Найти значение выражения
X − X2/2 + X3/3 − … + (−1)N−1·XN/N.
Полученное число является приближенным значением функции ln в точке 1 + X.
Условия задачи предполагают ввода значения X, которое по модулю не больше 1, поскольку именно для таких X указанный выше ряд (сумма) сходящийся. Это означает, что при |X| > 1 с увеличением N сумма будет стремится к бесконечности. Например, для X = 0.5 и X = 1 ряд сходящийся (сумма конечна), а для X = 1.1 − бесконечна.
var
i, N: word;
Sum, a, x: real;
begin
write('x = ');
readln(x);
Sum := x; { <== Начальная сумма равна первому члену x }
{ Далее выполнять программу имеет смысл только при x ≠ 0
(в противном случае все слагаемые равны 0): }
if x <> 0 then
begin
write('N = ');
readln(N);
a := x; { <== Первое слагаемое }
for i := 2 to N do
begin
{ Предыдущее значение (с противоположным знаком)
умножаем на x: }
a := -a * x;
Sum := Sum + a / i { <== Находим сумму }
end
end;
writeln;
writeln('Значение суммы: ', Sum:0:5);
readln
end.
**type** word;
: Представляет 16-битовое целое число без знака.Диапазон значений: 0 .. 65 535**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308 For26. Дано вещественное число X (|X| ≤ 1) и целое число N (> 0). Найти значение выражения
X − X3/3 + X5/5 − … + (−1)N-1·X2·N-1/(2·N-1).
Полученное число является приближенным значением функции arctg в точке X.
Здесь актуально то же замечание относительно X, что и в задании For25 (см. выше).
var
i, N: integer;
S, a, x, y: real;
begin
write('x = ');
readln(x);
S := x; { <== Начальная сумма равна первому члену x }
{ Далее выполнять программу имеет смысл только при x ≠ 0
(в противном случае все слагаемые равны 0): }
if x <> 0 then
begin
write('N = ');
readln(N);
a := x; { <== Первое слагаемое в данной сумме }
y := sqr(x); { <== Запоминаем x в квадрате }
for i := 2 to N do
begin
{ Для вычисления i-го значения предыдущее значение (с
противоположным знаком) умножаем на x в квадрате (число y) и
делим на произведение последовательных натуральных чисел: }
a := -a * y;
S := S + a / (2 * i - 1) { <== Находим сумму }
end
end;
writeln;
writeln('Значение суммы: ', S:0:5);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**function** Sqr(x: real): real;
: Возвращает квадрат числа x. For27. Дано вещественное число X (|X| ≤ 1) и целое число N (> 0). Найти значение выражения
X + 1·X3/(2·3) + 1·3·X5/(2·4·5) + …+ 1·3·…·(2·N−3)·X2·N-1/(2·4·…·(2·N-2)·(2·N-1)).
Полученное число является приближенным значением функции arcsin в точке X.
Здесь актуально то же замечание относительно X, что и в задании For25 (см. выше).
var
i, N: integer;
S, a, x, y: real;
begin
write('x = ');
readln(x);
S := x; { <== начальная сумма равна первому члену x }
{ Далее выполнять программу имеет смысл только при x ≠ 0
(в противном случае все слагаемые равны 0): }
if x <> 0 then
begin
write('N = ');
readln(N);
y := sqr(x); { <== Вычисляем x в квадрате }
a := x; { <== первое слагаемое в данной сумме }
for i := 2 to N do
begin
{ Для вычисления i-го значения предыдущее значение
умножаем на x в квадрате (число y), умножаем на
нечетное (2i-3) и делим на четное (2i-2): }
a := a * y * (2 * i - 3) / (2 * i - 2);
S := S + a / (2 * i - 1) { <== находим сумму }
end
end;
writeln;
writeln('Значение суммы: ', S:0:5);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308**function** Sqr(x: real): real;
: Возвращает квадрат числа x. For28. Дано вещественное число X (|X| ≤ 1) и целое число N (> 0). Найти значение выражения
1 + X/2 − 1·X2/(2·4) + 1·3·X3/(2·4·6) − … + (−1)N−1·1·3·…·(2·N−3)·XN/(2·4·…·(2·N)).
Полученное число является приближенным значением функции (1+X)1/2.
Здесь актуально то же замечание относительно X, что и в задании For25 (см. выше).
var
i, N: integer;
Sum, a, x: real;
begin
write('x = ');
readln(x);
Sum := 1; { <== Начальная сумма равна первому члену 1 }
{ Далее выполнять программу имеет смысл только при x ≠ 0
(в противном случае все последующие слагаемые равны 0): }
if x <> 0 then
begin
write('N = ');
readln(N);
a := 1; { <== Первое слагаемое }
for i := 1 to N do
begin
{ Для вычисления i-го значения предыдущее значение
(с противоположным знаком) умножаем на x, умножаем на
нечетное (2i-3) и делим на четное (2i): }
a := -a * x * (2 * i - 3) / (2 * i);
Sum := Sum + a { <== Находим сумму }
end
end;
writeln;
writeln('Значение суммы: ', Sum:0:5);
readln
end.
**type** integer;
: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647**type** real;
: Представляет число двойной точности с плавающей запятой.Размер: 8 байт Количество значащих цифр: 15 - 16 Диапазон значений: -1.8∙10308 .. 1.8∙10308