2015-10-05 2 views
-2

Когда я пытался вычислить сумму четных чисел, результат неверен, если начальный номер отрицательный?Зачем показывать неправильную сумму в C++?

Вот код:

#include <iostream> 


using namespace std; 

int main() { 
    signed int startingNumber, upperLimit; 
    signed int result = 0; 
    cout << "please enter the starting number: "; cin >> startingNumber; 
    cout << "please enter the upper limit: "; cin >> upperLimit; 

    while (true) { 
     if (startingNumber % 2 != 0) result += startingNumber; 
      if (upperLimit == startingNumber) break; 
      startingNumber++; 
     } 
    cout << "The result is: " << result << endl; 
} 

Но когда я запускаю сценарий следующий результат:

please enter the starting number: -2 
please enter the upper limit: 4 
The result is: 3 

Я думаю, что результат должен быть 4 не 3, а расчет - 2 +0 + 2 + 4 = 4.

С уважением ,,,

ответ

0

Изменить этот (startingNumber % 2 != 0) с этим:

(startingNumber % 2 == 0) 

Потому что вы хотите, чтобы суммировать даже числа, а не нечетные номера.

2

Вы используете if (startingNumber % 2 != 0), что означает, что он будет только добавлять числа, которые являются , а не, делящимися на два, что приводит к -1 + 1 + 3 = 3. Условие в операторе if истинно только в том случае, если остаток деления startingNumber на два не равен нулю , что будет иметь место для нечетных чисел.

Вместо этого используйте if (startingNumber % 2 == 0) result += startingNumber;, и вы должны получить правильную сумму.

Смежные вопросы