missmorozova2
?>

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

Информатика

Ответы

Misyura_Viktoriya1683

Так как из-за структуры языка все символы, вводимые для типа 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                                                                              

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

af-rc7893
Begin
    writeln('¶¶¶¶¶¶¶¶¶¶1');
    writeln('¶¶¶¶¶¶¶¶¶¶¶¶1');
    writeln('¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶');
    writeln('¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶');
    writeln('¶¶__¶¶¶__¶¶¶¶_¶¶¶¶¶¶¶¶');
    writeln('¶¶_¶¶¶¶_¶¶¶¶¶¶¶¶¶_¶¶¶¶¶1');
    writeln('¶_¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶1');
    writeln('¶_¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶1');
    writeln('¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶1');
    writeln('¶¶¶¶¶_¶¶¶¶¶¶¶__¶¶¶¶¶_¶¶¶¶¶');
    writeln('¶¶¶¶¶_¶¶¶¶¶¶¶¶¶_¶¶¶¶¶1');
    writeln('¶¶¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶');
    writeln('_¶¶1¶¶¶¶_¶¶¶¶¶¶¶¶¶¶1');
    writeln('_¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶¶1');
    writeln('__¶¶_¶¶¶¶¶¶_¶¶¶¶');
    writeln('__¶¶¶__¶¶¶¶¶¶_¶¶¶');
    writeln('__¶¶¶___¶__¶¶¶¶¶_¶¶¶¶');
    writeln('___¶¶¶¶¶_¶_¶¶¶¶¶¶_¶¶¶¶');
    writeln('___¶¶_¶¶¶¶¶1¶¶¶¶¶¶¶¶¶¶1');
    writeln('__¶__¶¶¶¶¶¶¶¶1¶¶¶¶¶¶¶¶¶¶¶1');
    writeln('_¶¶_¶¶¶¶_¶¶¶¶¶¶¶1¶¶¶¶¶_¶¶¶¶¶');
    writeln('_¶¶_0__0_¶¶¶¶¶¶¶¶¶¶¶¶1__¶¶¶¶__¶¶¶1');
    writeln('_¶¶_¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶¶1__¶¶¶¶_¶¶¶¶1');
    writeln('_¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶_¶¶¶1');
    writeln('__¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶_¶¶¶¶¶_¶¶¶1');
    writeln('___¶¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶¶__¶¶¶¶_¶¶¶¶1');
    writeln('¶¶¶_¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶__¶¶¶¶¶_¶¶¶1');
    writeln('¶¶¶¶¶¶___¶¶¶¶¶¶_¶¶¶¶¶¶__¶¶¶¶_¶¶¶1');
    writeln('¶_¶¶¶¶¶¶¶¶¶_¶¶¶¶¶_¶¶¶¶¶¶__¶¶¶¶_¶¶¶1');
    writeln('___1¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶__¶¶¶¶_¶¶¶1');
    writeln('__1¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶__¶¶¶¶_¶¶¶1');
    writeln('__1¶¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶¶__¶¶¶¶_¶¶¶1');
    writeln('__1¶¶¶¶¶_¶¶¶¶_¶¶¶¶__¶¶¶¶¶¶¶¶¶¶_¶¶¶_¶¶¶1');
    writeln('___1¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶_¶¶_¶¶_¶¶¶¶1');
    writeln('¶_¶¶¶¶¶_¶¶¶¶¶¶¶_¶¶¶¶¶¶¶_¶_¶¶_¶¶¶1');
    writeln('¶¶¶¶¶_¶¶¶¶¶¶¶¶_¶¶¶¶¶¶_¶_¶¶_¶¶1');
    writeln('¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶_¶¶_¶¶¶¶1');
    writeln('¶¶¶¶_¶¶¶¶¶¶¶¶¶¶¶¶_¶¶1');
    writeln('___¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶¶___¶¶¶___¶¶¶¶¶');
    writeln('__¶¶¶¶¶¶¶¶¶¶¶¶¶¶_¶¶¶¶¶¶¶¶');
    writeln('_¶¶¶¶¶¶¶¶¶¶¶¶¶');
    writeln('_¶___¶¶¶¶_¶¶¶¶');
    writeln('¶___¶¶¶¶_¶¶¶¶¶¶¶');
    writeln('¶¶¶¶_¶¶¶¶¶1¶¶');
    writeln('¶¶¶¶_¶¶¶¶¶¶¶¶¶_¶¶');
    writeln('¶¶¶¶_¶¶¶¶¶¶¶¶¶¶_¶¶');
    writeln('¶¶¶¶¶_¶¶¶¶¶¶¶¶¶_¶¶');
    writeln('¶¶¶¶¶_¶¶¶¶¶¶¶¶¶¶_¶¶');
    writeln('¶¶¶¶_¶¶¶¶¶¶¶¶¶_¶¶');
    writeln('¶¶¶¶_¶¶¶¶¶¶¶¶¶_¶');
    writeln('¶¶¶¶¶¶¶¶¶¶_¶');
    writeln('¶¶¶1¶¶¶¶¶');
    writeln('¶¶1¶¶');
    writeln('¶¶');
    writeln('¶¶');
end.
Vladimirovich351
Для перевода числа из десятичной системы счисления в двоичную нужно делить это число на 2 до тех пор, пока не получим ноль, и остатки выписывать.
Делить нужно нацело, то есть дробной части быть не должно.

9 / 2 = 4, остаток 1
4 / 2 = 2, остаток 0
2 / 2 = 1, остаток 0
1 / 2 = 0, остаток 1

Теперь записываем остатки снизу вверх (хотя тут не важно): 1001

9(10) = 1001(2).

Второй

9 = 8 + 1 = 2^3 + 2^0

Число 2 в какой-либо степени в системе счисления с основанием 2 представляет собой единицу, после которой идут нули, количество которых равно этой степени:

2^3 = 1000(2)
2^1 = 1(2)

1000(2) + 1(2) = 1001(2)

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Программа выводит информацию о дате рождения. есть класс 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; }
Ваше имя (никнейм)*
Email*
Комментарий*