Jeżeli użytkownik wpisze niepoprawne dane (nieprawidłowy format danych np. liczbę zmiennoprzecinkową, czy typ znakowy lub liczbę różną od wskazanego zakresu) to uruchomi się pętla while, która będzie wykonywać się dopóki nie otrzyma prawidłowych danych jakie określa warunek.
cout << "Podaj numer miesiaca (1-12): ";
cin >> miesiac;
while (!cin.good() || miesiac < 1 || miesiac > 12) {
cout << "Sprobouj ponownie: ";
cin.clear();
cin.ignore(100, '\n');
cin >> miesiac;
}
Wystarczy wstawić do Twojego kodu w zaznaczonym przeze mnie miejscu ; )