Проблема в цикле

Не могу понять в чем проблема, неправильно считает суммы от x до y.

#include <iostream>
 using namespace std;
 int main ()
  {
setlocale(0,"");
int i;
int sum=0;
int a,b;
cout << "Введите начальное число: ";
cin >> a; // пользователь вводит первое число
cout << "Введите конечное число: ";
cin >> b; // пользователь вводит второе число
i=a; // начало отсчета
while (i<b) // я так понимаю - "делать пока не перевалит за b
{i++;
sum = sum + i;
}
cout << "сумма чисел от " << a;
cout << " до " << b;
cout << " равна " << sum << endl; // а вот тут он выдает неправильный ответ

system("pause");
    return 0;
}

Ответ выдает неправильный, т.е. например от 20 до 21 должно получиться 41, а выходит 21.

while (i<b) // я так понимаю - "делать пока не перевалит за b

Здесь нужно строгое неравенство. Используйте сравнение «меньше либо равно».

 while (i <= b)

Все равно будет считать неправильно, а вот так и код более читабелен, imho.

#include <iostream>
using namespace std;
int main ()  {
setlocale(0,"");

int sum=0;
int a,b,i;
    cout << "Введите начальное число: ";
    cin >> a; 
    cout << "Введите конечное число: ";
    cin >> b;

for (i=a; i<=b; i++){
    sum = sum + i;
    }

cout << "сумма чисел от " << a << " до " << b << " равна " << sum << endl; 
    system("pause");
    return 0;
}

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.

Ответить

Вы можете использовать разметку markdown для оформления комментариев и постов. Используйте функцию предпросмотра для проверки корректности разметки.

Пожалуйста, оформляйте исходный код в соответствии с правилами разметки. Для того, чтобы вставить код в комментарий, скопируйте его в текстовое поле ниже, после чего выделите то, что скопировали и нажмите кнопку «код» в панели инструментов. Иначе ваш код может принять нечитаемый вид.

Либо производите оформление кода вручную, следующим образом:

``` #include <iostream> using namespace std; int main() { // ... } ```

Предпросмотр сообщения

Ваше сообщение пусто.