Найти баг в программе с++
Пишу программу на С++ в которую пользователь будет вводить день и месяц (год фиксированный - первый день года понедельник), а программа будет показывать день недели. Уже на этапе подсчета количества дней за предыдущие месяца столкнулся с неправильными цифрами (количество дней в месяцах находится в массиве 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 шт):
Ну, меня терзают смутные сомнения в том, что вы выбрали верный путь... Тем более что
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?