Условие задачи : Составить программу которая требует у пользователя ввести числовой пароль. Если пароль правильный, то все строки экрана заполняются сообщением Доступ разрешен. Число попыток 3.
Сложность : средняя .
Для начала давайте решим что нам будет нужно в этой задаче.
- Нам понадобятся 4 переменные. Две под пароль, одна для количества попыток и еще одна для цикла со счетчиком который мы будем использовать когда нам понадобиться заполнить экран сообщением Доступ разрешен.
- Также нужен будет цикл, я решил использовать цикл repeat until ,т.к. очень удобно придумать условие для выхода и удобно работать с нашими попытками которых у нас 3.
- В самом цикле будет 2 условия if else.
- И цикл for.
Давайте объявим наши переменные :
uses crt ; var pass , userpass : longint; i , count : integer ; begin end.
Для пароля я использовал тип longint, что он был длиннее , т.к. если использовать тип integer, то максимум цифр в пароле будет 5.
А для цикла и для числа попыток можно уже использовать тип integer, т.к. цифры там не большие.
Для начала нам нужно задать пароль и число попыток.
pass := 234124; count := 3;
Мы задали какой-то пароль и число попыток.
Теперь нам надо сделать цикл, сначала просто напишем его, с условием выхода :
repeat until(pass = userpass);
Т.е. у нас цикл прекратит работу когда пароль совпадут, вполне все логично.
Теперь самое трудное.
В самом цикле сначала мы выводим число попыток.
writeln('Осталось попыток : ', count);
Дальше пишем наше первое условие :
if count < 1 then begin writeln('В доступе отказано!!!'); break; {выход из цикла} end else write('Введите пароль : '); readln(userpass);
Что мы тут делаем ? Мы начинаем смотреть сколько попыток у нас на данные момент. Если их меньше 1 , т.е. ноль, то мы выводим сообщение и прекращаем работу цикла и затем выходим из программы. Иначе т.е. попытки у нас еще остались мы разрещаем пользователю ввести пароль.
Дальше уже идет работа с паролем , пишем условие :
if pass = userpass then begin clrscr; for i:=1 to 25 do writeln('Доступ разрешен!!!'); end else begin writeln('Пароль введен не верно'); count := count - 1 ; Delay(1000); сlrscr; end;
Как я и сказал идет работа с паролем. Если пароли совпадают , то мы очищаем экран, т.е. удаляется всё что было написано ранее и заполняем экран надписью Доступ разрешен!!!.
Если не правильно ввели то выводим что Пароль введен не верно, уменьшаем количество попыток на одну.
Delay(1000); сlrscr;
Это можно и не писать, я сделал для удобства, эти строки кода, очищают экран после каждой не правильной попытки через одну секунду , чтобы не было лишнего текста.
Вот и все программа готова!!!
Весь код программы :
uses crt ; var pass, userpass : longint ; count, i : integer; begin clrscr; pass := 234124; count := 3 ; repeat writeln('Осталось попыток : ', count); if count < 1 then begin writeln('В доступе отказано!!!'); break;{выход из цикла} end else write('Введите пароль : '); readln(userpass); if pass = userpass then begin clrscr; for i:=1 to 25 do writeln('Доступ разрешен!!!'); end else begin writeln('Пароль введен не верно'); count := count - 1 ; Delay(1000); clrscr; end; until(pass = userpass); readln; end.