Напишите программу на c++, которая вводит с клавиатуры номер месяца (m) и день (d), и определяет, сколько дней осталось до Нового года. При вводе неверных данных должно быть выведено сообщение об ошибке. Считается, что год невисокосный. Входная строка содержит два целых числа: номер месяца и номер дня в этом месяце. Программа должна вывести количество дней, оставшихся до Нового года (k). Если введены неверные данные, нужно вывести число -1.
```c++
#include
using namespace std;
int main() {
int m, d;
cout << "Введите номер месяца: ";
cin >> m;
cout << "Введите номер дня: ";
cin >> d;
// Проверка валидности введенных данных
if ((m < 1 || m > 12) || (d < 1 || d > 31)) {
cout << "Ошибка: неверные данные!" << endl;
return 0; // Программа завершается, если данные неверные
}
int days_in_months[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int days_until_new_year = 0;
for (int i = m - 1; i < 12; i++) {
days_until_new_year += days_in_months[i];
}
days_until_new_year -= d;
cout << "До Нового года осталось " << days_until_new_year << " дней." << endl;
return 0;
}
```
Давайте разберем эту программу по шагам:
1. Мы объявляем переменные `m` и `d`, которые будут хранить номер месяца и номер дня соответственно.
2. После этого, мы выводим сообщение на экран с просьбой ввести номер месяца с помощью `cout`, а затем считываем введенное значение с помощью `cin` и сохраняем его в переменную `m`. Далее мы делаем то же самое для ввода номера дня.
3. Затем мы проверяем введенные значения. Если номер месяца меньше 1 или больше 12, или номер дня меньше 1 или больше 31, то выводим сообщение об ошибке и завершаем программу (`return 0`).
4. Далее мы создаем массив `days_in_months`, где каждому месяцу соответствует количество дней. В этом массиве январю соответствует элемент с индексом 0, февралю - 1 и так далее.
5. Затем мы инициализируем переменную `days_until_new_year` нулем. Эта переменная будет использоваться для подсчета количества дней до Нового года.
6. Мы используем цикл `for`, чтобы пройтись по месяцам, начиная с текущего месяца (`m - 1`) и до декабря (`11`), и прибавляем количество дней в каждом месяце к переменной `days_until_new_year`.
7. Мы вычитаем введенное количество дней `d` из переменной `days_until_new_year`.
8. Наконец, мы выводим количество дней до Нового года на экран с помощью `cout`.
Таким образом, программа проверяет введенные данные, подсчитывает количество дней до Нового года и выводит результат. Если введены неверные данные, программа выводит `-1`.