- Код: Выделить всё
Program n17_izvestna_tekushaja_data;
Var year,month,day,user_year_birthday,user_month_birthday,user_day_birthday:Integer;
Begin
year:=2008;
month:=10;
day:=2;
Writeln('Введите год своего рождения');
Readln(user_year_birthday);
If (year-user_year_birthday<16)
Then Writeln('Вам меньше 16 лет')
Else If (year-user_year_birthday>16) Then Writeln('Вам больше 16 лет')
Else If (year-user_year_birthday=16) Then
Writeln('Введите цифру месяца своего рождения (январь - 1)');
Readln(user_month_birthday);
If (month<user_month_birthday) Then Writeln('Вам меньше 16 лет')
Else If (month>user_month_birthday) Then Writeln('Вам больше 16 лет')
Else If (month=user_month_birthday) Then
Writeln('Введите число дня своего рождения');
Readln(user_day_birthday);
If (day<user_day_birthday) Then Writeln('Вам меньше 16 лет')
Else If (day>=user_day_birthday) Then Writeln('Вам больше 16 лет');
Readln;
End.
В коде программы задается текущий год, номер месяца и число. Пользователь вводит год, номер месяца и число своего рождения с клавиатуры.
Мне не нравится, что программа запрашивает год рождения до тех пор, пока не закончится переменная year. Я хочу чтобы она один раз проверила, действительно ли year-user_year_birthday=16, year-user_year_birthday<16 или year-user_year_birthday>16, и после этого закончила свою работу, то есть вышла из черного экрана, и снова был показан код программы, или пошла дальше выполнять оператор If.
Можно было бы поставить после Writeln('Вам больше 16 лет') оператор Readln, но тогда надо ставить две точки с запятой, что оператор If сделать не позволяет. Как быть?