Смена знака с + на - в цикле С++

Я новичок в программировании,нужно написать цикл в котором сумма будет считаться как 1-1/2+1/3-1/4+1/5-1/6 и т.д,не совсем понимаю как менять знак с + на - в цикле

using namespace std;
int main() {
    int a;
    int k = 0;
    float sum = 0;
    cout << "Input A(A>1):"; cin >> a;
    while (sum < a) {
        k++;
        sum += -1.0 * (-1.0 / k);
    }
    sum = sum - 1.0 / k;
    k = k - 1;

    cout << "k:" << k << endl;
    cout << "sum:" << sum << endl;
    return 0;
} 

Ответы (1 шт):

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

А что ж вы сумму сравниваете, а не последний член? Тем более у вас вообще бред - a>1, так что считаться у вас будет до бесконечности - ваша знакопеременная сумма же никогда не превысит 1, сколько ни суммируй!

Считают такие вещи или до достижения очередным членом ряда (абсолютного) значения, меньшего какой-то погрешности, или до определенного члена ряда. В вашем случае это все равно, ибо из 1/N < eps можно задавать и N, и eps.

Зададим N.

double sign = 1, sum = 1;
for(int n = 2; n < N; ++n)
    sum += (sign*=-1)/n;

Все.

Можно и проще:

    sum += (sign=-sign)/n;
→ Ссылка