Автор, совершенно очевидно, что от Вас требуется знание циклов, а также циклических операторов Паскаля!
◉ Но сначала — уточняющий вопрос: какой номер у первого члена ряда: 0 или 1?
В зависимости от этого уточнения ответы получаются разными. В принципе эту информацию можно запросить прямо в программе.
Если присмотреться к заданию, то видно, что значение каждого члена ряда зависит непосредственно от его номера, а номер изменяется с шагом +1. В программировании такому номеру соответствует переменная-счётчик, а значение каждого члена ряда вычисляется в цикле со счётчиком (счётном цикле). В Паскале это стандартный оператор
for.
°√° Маленький финт алгоритмизации. Конечно же для возведения в произвольную степень с полным правом можно применить стандартную формулу с натуральным логарифмом и экспонентой. Но рациональнее воспользоваться рекуррентностью, достаточно осознать, что каждое первое слагаемое получается из первого слагаемого предшествующего члена умножением на ½. Аналогично, каждое второе слагаемое получается из второго слагаемого предшествующего члена умножением на ⅓. Таким образом вполне достаточно в теле цикла преобразовывать каждое из слагаемых, складывать результаты и наращивать частичную сумму.
✓ Вот, что следует запрограммировать:
1. Подготовка. AD₁ := 1, AD₂ := 1
2. Уточняющий запрос: I₁ = 0 или 1?
3. Ввод n
4. Если I₁ = 0, то S := 2 и n := n – 1, иначе S := 0
5. Цикл i := I₁ до n
5.1. AD₁ := AD₁ * 1/2
5.2. AD₂ := AD₂ * 1/3
5.3. S := S + AD₁ + AD₂
5.4. Конец цикла
6. Вывод S
Конец.
Peer-2-PeerМудрец (16172)
4 года назад
var
Sum, A1, A2: extended;
i, I1, n: integer;
Begin
A1 := 1.0; A2 := 1.0; Sum := 0.0;
write ('Пожалуйста, уточните, с какого номера начинается ряд! Введите либо 0, либо 1. №: '); readln (I1);
write ('Пожалуйста, введите количество первых членов ряда. N: '); readln (n);
if I1 = 0 then begin n := n – 1; Sum := 2.0 end;
for i := I1 to n do
begin
A1 := A1 / 2.0; A2 := A2 / 3.0; Sum := Sum + A1 + A2
end;
writeln; write ('Сумма ', n, ' первых членов ряда равна ', Sum);
readln
end.