Вопрос задан 10.08.2026 в 10:30. Предмет Информатика. Спрашивает Харук Любомир.

Язык программирования C++. Организовать ввод даты в формате дд.мм.гг с проверкой на правильность и соответствие данному формату.

Перейти к ответам

Ответы на вопрос

Отвечает Бородин Саша.

Проще всего вводить дату как строку и проверять: длину, точки на нужных местах, цифры, а потом правильность дня и месяца.

Пример программы на C++:

#include <iostream>
#include <string>
using namespace std;

bool isDigit(char c) {
return c >= '0' && c <= '9';
}

bool isLeap(int year) {
return year % 400 == 0 || (year % 4 == 0 && year % 100 != 0);
}

int main() {
string s;
cout << "Введите дату в формате дд.мм.гг: ";
cin >> s;

bool ok = true;

if (s.length() != 8) ok = false;
if (ok && (s[2] != '.' || s[5] != '.')) ok = false;

if (ok) {
for (int i = 0; i < 8; i++) {
if (i != 2 && i != 5 && !isDigit(s[i])) ok = false;
}
}

if (ok) {
int day = (s[0] - '0') * 10 + (s[1] - '0');
int month = (s[3] - '0') * 10 + (s[4] - '0');
int year = 2000 + (s[6] - '0') * 10 + (s[7] - '0');

int daysInMonth[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

if (month < 1 || month > 12) ok = false;
else {
if (month == 2 && isLeap(year)) daysInMonth[2] = 29;
if (day < 1 || day > daysInMonth[month]) ok = false;
}
}

if (ok) cout << "Дата введена правильно";
else cout << "Ошибка: дата неверная или формат не дд.мм.гг";

return 0;
}

Например, дата 29.02.24 будет правильной, а 31.04.24 — нет, потому что в апреле 30 дней.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос