Объясните мне пожалуйста по уроку 4 C++

Доброго дня. Начал изучать С++. И вот на четвертом уроке у меня он как-то странно себя ведет. Там в уроке считается сумма всех чисел от 1 до 1000. Я все это сделал — все хорошо. Стал ковыряться, пробовать. Добавил в код возможность пользователю самому задавать конечное число, до которого нужно посчитать сумму всех чисел. Потом сделал возможность вычислить сумму всех четных и всех нечетных чисел. Потом сделал проверочное действие, поставил условие, где сумма всех четных складывается с суммой всех нечетных и сравнивается с суммой всех чисел. Но заметил одно странное явление. Если указывать число до миллиона, то тогда все нормально делает. А вот если указать более миллиона, 1100000 например, то тогда сумма всех числе становится отрицательной. Или если указать число 100000, тогда сумма всех чисел положительное число, а вот суммы четных и суммы нечетных чисел получаются отрицательными. Почему так?

Вот сам код:

#include <iostream>
using namespace std;

int main()
{
    setlocale(0, "");


    int chislo; // инициируем переменную конечного числа 
    cout << "Введите число: "; // попросим пользователя ввести конечное число 
    cin >> chislo; // запишем в переменную "chislo" число введенное пользователем

    int i; // счетчик цикла
    int sum_i = 0; // сумма чисел от 1 до chislo.
    for (i = 1; i <= chislo; i++) // задаем начальное значение 1, конечное chislo и задаем шаг цикла - 1.
    {
        sum_i = sum_i + i;
    }
    cout << "Сумма чисел от 1 до " << chislo << " (sum_i) = " << sum_i << endl;
    int k; // счетчик цикла
    int sum_k = 0; // сумма чисел от 1 до chislo.
    for (k = 1; k <= chislo; k = k + 2) // задаем начальное значение 1, конечное chislo и задаем шаг цикла - 2.
    {
        sum_k = sum_k + k;
    }
    cout << "Сумма всех нечетных чисел (sum_k) от 1 до " << chislo << " = " << sum_k << endl;
    int l; // счетчик цикла
    int sum_l = 0; // сумма чисел от 1 до chislo.
    for (l = 0; l <= chislo; l = l + 2) // задаем начальное значение 0, конечное chislo и задаем шаг цикла - 2.
    {
        sum_l = sum_l + l;
    }
    cout << "Сумма всех четных чисел (sum_l) от 1 до " << chislo << " = " << sum_l << endl;
    int sum_prov = sum_k + sum_l;
    cout << "Проверочное действие, сложим нечетную сумму с четной" << endl; 
    cout << "sum_k + sum_l = sum_i" << endl;
    if (sum_prov == sum_i) {
        cout << "Проверка завершена успешно" << endl;
        cout << sum_k << " + " << sum_l << " = " << sum_i << endl;
    }
    else {
        cout << "Что-то не так, проверочная сумма не равна сумме всех чисел" << endl;
        cout << sum_k << " + " << sum_l << " != " << sum_i << endl;
    }
    system("pause");
    return 0;
}

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

Ответить

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

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

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

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

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

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