Программка выводит информацию о дате рождения.Есть класс Date и унаследованный от

Программа выводит информацию о дате рождения.
Есть класс Date и унаследованный от него Birthday.
В конструктор класса Birthday необходимо передать три значения типа int, для денька, месяца и года соответственно. Если передавать значения вручную прямо из программки - все великолепно. Но если доверить юзеру самому вводить эти значения с клавиатуры (что разумно) и записывать их в какие-или переменные, а позже передавать значения этих переменных в конструктор - возникает возможность ввода данных всех типов, приводимых к int. Как проверить, что юзер вправду ввёл с клавиатуры целые числа? И если введены недопустимые значения (К примеру, буковка либо же строчка, содержащая буковкы, и т.д) обработать ошибку с помощью try - catch - throw?


include
include

using namespace std;

class Date

protected:
int day, month, year;
public:
Date ()

day = 0;
month = 0;
year = 0;


void info ()

cout"day: "dayendl;
cout"month: "monthendl;
cout"year: "yearendl;
coutendl;

;

class Birthday : public Date
public:
Birthday (int d_day, int m_month, int y_year)
day = d_day;
month = m_month;
year = y_year;

;


int main()


Birthday Ilya(17,10,1999);
Birthday Alina(5,2,1999);
Birthday Angelina(5,2,1999);

Ilya.info();
Alina.info();
Angelina.info();

return 0;

Задать свой вопрос
Игорек Махагонов
Короче, смешной код.
Левшиц Маргарита
Всё можно делать через условия, но в вопросе задаётся другой вопрос.
Kabachnyj Vladislav
Да ну? Читаем пристально: "Как проверить, что юзер вправду ввёл с клавиатуры целые числа? И если введены НЕДОПУСТИМЫЕ значения..."
Ольга Байзерова
Да, там далее приведены случаи ввода нечисловых символов, но едь написано К примеру, т.е. этим недопустимые значения вовсе не исчерпываются.
Леонид Посевкин
Скажите, неохота была это все расписывать - я поверю.
Элина Кохальская
Прочтите пример недопустимых значений.
Землянкина Мирослава
Я написал выше: этим недопустимые значения совсем не исчерпываются.
Анатолий
Для корректной даты недопустимые значения - это достаточно много всего.
Шпагина Саша
Не вижу смысла продолжать спорить, поскольку создатель сам написал, какие примеры ему необходимо предотвращать.
Вячеслав Отарбиев
Предотвратить ввод несуществующих дат я в состоянии) Вопрос был действительно только в том, как предупредить ввод значений, приводимых к int
1 ответ

Так как из-за структуры языка все символы, вводимые для типа int преобразуются в 0, то после ввода в main можно проверяться на наличие нуля. Это никак не навредит программке, поскольку в датах не может быть нуля.

Код

int main()

 int day = 0, month = 0, year = 0;

 cout lt;lt; "Ilya (d//m//y): ";

 cin gt;gt; day gt;gt; month gt;gt; year;

 if((day == 0) (month == 0) (year == 0))

     cout lt;lt; "Вы ввели неправильные данные!";

     return 0;

 

 else

    // ...

 

 return 0;

Проверка

Ilya (d//m//y): six 3 1999                                                                            

Вы ввели неверные данные!


Ilya (d//m//y): ( 8 1954                                                                              

Вы ввели неправильные данные!

, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт