Найти баг в программе с++

Пишу программу на С++ в которую пользователь будет вводить день и месяц (год фиксированный - первый день года понедельник), а программа будет показывать день недели. Уже на этапе подсчета количества дней за предыдущие месяца столкнулся с неправильными цифрами (количество дней в месяцах находится в массиве days_number). Убил уйму времени, но так и не нашел где ошибка. Вот сам код программы на данный момент:

// День недели по дате (месяц-день).cpp : Этот файл содержит функцию "main". Здесь начинается и заканчивается выполнение программы.
//

#include <iostream>
#include <string>
using namespace std;
int main()
{
    setlocale(LC_ALL, "rus");
    string days_in_week[7] = { "Четверг", "Пятница", "Суббота", "Воскресенье", "Понедельник", "Вторник", "Среда" };//дни недели, они будут нужны мне позже
    int days_number[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };//количество дней в месяцах
    int days;
    int month;
    int result;
    int summa;
    cout << "Введите день, а затем месяц через пробел:\n" << endl;
    cin >> days;//вводится день
    cin >> month;//вводится месяц
    summa = 0;//ставим сумму дней месяца в положение 0
    for (int i = 0; i < days_number[month - 1]; i++)//начало цикла; должно посчитать дни всех месяцов до введеного пользователем не включая его
    {
        summa = summa + days_number[i];
    }
        cout << "Сумма:" << summa<< endl;
}

Пример ошибки: пользователь вводит день - 1. Пользователь вводит месяц - 2. Правильный результат будет - 59(31+28). Но программа выдает -1609084012.

Очень прошу вас о помощи. Пишу я на Visual Studio 2019, Windows 7


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

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

Ну, меня терзают смутные сомнения в том, что вы выбрали верный путь... Тем более что

for (int i = 0; i < days_number[month - 1]; i++)
{
    summa = summa + days_number[i];

Итак, month у вас - 2. Т.е. цикл по i от 0 до 27 включительно.

Подумайте, чему равно, например, days_number[i] при i равном 20?

→ Ссылка