C/C++

Использование неинициализированной памяти

Делаю простую программку на С++: нужно вывести, сколько в месяце дней, в зависитимости от его порядкового номера, но нужно учесть то, что год может быть високосным или не високосным (вводим с клавы). Ошибка на скрине и в самой теме вопроса (подчёркивает переменную b).
#include <iostream>
using namespace std;
class Yaer {
public:
Yaer() : year(1900) {}
Yaer(int year) : year(year) {}
int days(int month) {
if (month < 1 || month > 12) return -1;
if (month == 2 && is_leap()) return 29;
return box[month];
}
private:
int year;
inline static const int box[] = { 365, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
bool is_leap() {
bool result;
if (year % 4 != 0) result = false;
else if (0 == year % 400) result = true;
else if (0 == year % 100) result = false;
else result = true;
return result;
}
};
int integer(const char* msg) {
cout << msg;
int value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
int main() {
system("chcp 1251 > nul");
while (true) {
auto year = integer("Введите год: ");
auto month = integer("Введите номер месяца: ");
Yaer date(year);
auto days = date.days(month);
if (days > 0) cout << "Количество дней в месяце: " << days << '\n';
else puts("Месяца с таким номером не существует!");
puts("");
}
}
Игорь Овчинников
Игорь Овчинников
72 610
Лучший ответ
После int b; должен быть cin >> b;

Но вообще есть формулы вычисления дней в месяце заданного года.

https://tproger.ru/problems/days-in-month-formula/
Андрей Краковский дело в том, что нужно использовать именно switch, так как это было обязательно, потому что так написано в методичке
Есть вариант позамысловатее!
Андрей Якубик
Андрей Якубик
21 700