Помощь - Поиск - Пользователи - Календарь
Полная версия: . Вычислить сумму S, не используя операцию возведения в степень.
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
NeiroN
Чтобы не нарушать правила...создал вторую тему.

Задание 2
Дано значение x и натуральное число n. Вычислить сумму S, не используя операцию возведения в степень.

n=15

S=sin x+sin(в квадрате) x+sin(в кубе) x+...sin(в степени n) x

Айра
Думаю, можно попробовать сделать так:
Считаем значение sin(x) в какую-нибудь переменную t, присваиваем его сумме и еще одной переменной p: real (она будет отвечать за очередное слагаемое суммы). Затем запускаем цикл for i:=1 to 14 do, каждая итерация которого будет увеличивать p в t раз и прибавлять его к сумме. В итоге получим нужную сумму без операции возведения в степень..

Попробуй сделать сам, если что непонятно - спрашивай smile.gif
NeiroN
Пробую...билиберда получается, я на ветвления то задачки еще с трудом делаю, на два ветвления получается, а на три "дутки в нос"... unsure.gif
volvo
На самом деле эта задача проще, чем ветвления... Тут - цикл, запутаться практически негде. Все, что тебе надо знать при вычислении этого выражения - это что при умножении Xn-1 на X получается Xn. А теперь - смотрим, как это реализуется:
var
sin_X, power: real;
s: real;
i: integer;

begin
s := 0; { <-- Здесь будем хранить сумму }
sin_X := sin(pi/4); { <-- это - значение sin(X), я взял первое попавшееся, sin(pi/4) }
power := 1; { <-- Здесь будем хранить текущее значение sin_X^i }

for i := 1 to 15 do begin { а теперь - проходим по всем 15-ти степеням }

{
и, как я говорил выше, предыдущую степень умножаем на значение sin_X.
В результате в power на каждой итерации хранится число sin_X в степени i
}
power := power * sin_X;
s := s + power; { <-- Ну, и суммируем i-ю степень }
end;
writeln(s); { <-- Все, можно выводить результат }
end.
А теперь - вопрос на засыпку, чтобы убедиться, что ты понял о чем здесь идет речь: почему изначально S = 0, а power = 1? И второе: А почему не сделать вот так:
  for i := 1 to 15 do begin
sin_X := sin_X * sin_X;
s := s + sin_X;
end;
, вместо того, что я предложил выше?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.