Программа выводит информацию о дате рождения. есть класс 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: "«day«endl; cout«"month: "«month«endl; cout«"year: "«year«endl; cout«endl; } }; 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; }

Hollaholla322 Hollaholla322    1   30.09.2019 19:30    2

Ответы

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

Код

int main()

{

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

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

 cin >> day >> month >> year;

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

     cout << "Вы ввели неверные данные!";

     return 0;

 }

 else{

    // ...

 }

 return 0;

}

Проверка

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

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


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

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

ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика