Сумма ряда в С++
Задача. Сумма ряда от 1 до n 1/x^i В консоль выводит ноль, не могу найти ошибку. Объясните, пожалуйста
#include <iostream>
using namespace std;
void main()
{
setlocale(LC_ALL, "ru");
int N, x;
double sum;
sum = 0;
cout << "Введите N:";
cin >> N;
cout << "Введите a:";
cin >> x;
int i = 1;
for (; i <= N; i++)
{
sum += 1/x^i;
}
cout << "Сумма= " << sum;
}
Ответы (1 шт):
Все было бы ничего, если бы вы учили С++ - x^i - это побитовое исключающее или x и i.
pow действительно не нужен - ведь i+1-й член получается делением i-го на x - так что каждый очередной член вычисляется "на ходу".
#include <iostream>
using namespace std;
int main()
{
int N;
double sum = 0, x, term;
cout << "Введите N: ";
cin >> N;
cout << "Введите x: ";
cin >> x;
term = 1;
for(int i = 0; i < N; ++i)
{
term /= x;
sum += term;
}
cout << sum << endl;
}
Можно даже объединить вычисления sum и term в одно выражение -
for(int i = 0; i < N; ++i) sum += (term /= x);
:)
Это то, что от вас хотят. Но это же вычисляется проще - поскольку это сумма геометрической прогрессии, которая равна
Такую формулу запрограммируете самостоятельно (тогда учтите, что при x==1 следует избежать деления на 0) или нужна помощь?
Раз нельзя использовать pow, то вычислить x^n можно как "в лоб" умножением, так и быстрым возведением в степень. Или, на грани фола :), воспользоваться тем, что
Обработать ситуацию отрицательного значения x догадываетесь, как?

