Сумма ряда в С++

Задача. Сумма ряда от 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 шт):

Автор решения: Harry

Все было бы ничего, если бы вы учили С++ - 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 догадываетесь, как?

→ Ссылка