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

273
18 мая 2022, 17:10

Я новичок в программировании,нужно написать цикл в котором сумма будет считаться как 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;
} 
Answer 1

А что ж вы сумму сравниваете, а не последний член? Тем более у вас вообще бред - 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;
READ ALSO
Ввод и вычисление произведения элементов массива

Ввод и вычисление произведения элементов массива

Найти произведение элементов одномерного массива, состоящего из N элементовРазмер массива и его элементы вводятся с клавиатуры

205
Как правильно отсортировать структуру по полю динамической строки с помощью qsort(СИ)?

Как правильно отсортировать структуру по полю динамической строки с помощью qsort(СИ)?

пишу интерпретатор командЕсть входной файл, в котором даны инструкции вида:

159
Конфликт размера операндов

Конфликт размера операндов

нужно значение из регистра edx перенести в массив символовНе знаю как исправить конфликт операндов

314
Методы минимизации функции нескольких переменных

Методы минимизации функции нескольких переменных

Какой метод поиска минимума функции лучше всего использовать для такой задачи: Есть функции двух, трёх переменных и нужно найти минимальное...

186