IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Цикл с параметром
Artem7
сообщение 21.02.2012 20:00
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 54
Пол: Мужской

Репутация: -  0  +


Здрасте написал прогу но почему то не работает (должна когда я ввожу не правильный пароль выдавать что он не правильный а когда правильный что правильный)

Program proverkaparolya;
Var s,pr,i:integer;
Begin
pr:=1234;
writeln('Введите пароль, у Вас 3 попытки');
for i:=1 to 3 do
readln(s);
if s=pr then
writeln('Пароль верный')
else if i<3 then writeln('Пароль неверный, осталось попыток ',3-i);
readln;
End.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 21.02.2012 20:03
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Проверять правильность пароля внутри цикла не пробовал? smile.gif Как-то так:

for i := 1 to 3 do
begin
readln(s);
if s = pr then // ok, можно цикл заканчивать
else // неправильно, пробуем дальше
end;
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Artem7
сообщение 22.02.2012 10:08
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 54
Пол: Мужской

Репутация: -  0  +


Цитата(IUnknown @ 21.02.2012 20:03) *

Проверять правильность пароля внутри цикла не пробовал? smile.gif Как-то так:

for i := 1 to 3 do
begin
readln(s);
if s = pr then // ok, можно цикл заканчивать
else // неправильно, пробуем дальше
end;


Вооо спасибо терь работает)))))))

А как реализовать если пароль правильный чтоб цикл заканчивался а то даже если он правильный то не заканчивается....

Сообщение отредактировано: Artem7 - 22.02.2012 10:10
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 22.02.2012 11:37
Сообщение #4


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Artem7 @ 22.02.2012 11:08) *
А как реализовать если пароль правильный чтоб цикл заканчивался а то даже если он правильный то не заканчивается....

А почему у тебя вообще только три попытки? И к тому же, по истечении этих трех попыток все равно выходим на выполнение программы (по всей видимости). Странно как-то это )).
Я бы сделал как-то так..

writeln('введите пароль (для выхода введите пустую строку)');
repeat
readln(s);
if s = '' then exit // по пустому паролю прекращаем процесс и выходим из проги
until s = pr;


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Artem7
сообщение 22.02.2012 11:41
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 54
Пол: Мужской

Репутация: -  0  +


Цитата(Lapp @ 22.02.2012 11:37) *

А почему у тебя вообще только три попытки? И к тому же, по истечении этих трех попыток все равно выходим на выполнение программы (по всей видимости). Странно как-то это )).
Я бы сделал как-то так..

writeln('введите пароль (для выхода введите пустую строку)');
repeat
readln(s);
if s = '' then exit // по пустому паролю прекращаем процесс и выходим из проги
until s = pr;


Да не так не пойдёт мне надо именно через цикл по параметру а то что 3 попытки да это просто так нужно для цикла по параметру вот только как сделать чтоб выход был после ввода правильного.

Код
сделал так вместо надписи 'пароль правильный' прога заканчивается (p.s спасибо это я взял из вашего кода чтобы прога заканчивалась)


Сообщение отредактировано: Artem7 - 22.02.2012 11:46
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Lapp
сообщение 22.02.2012 11:54
Сообщение #6


Уникум
*******

Группа: Модераторы
Сообщений: 6 823
Пол: Мужской
Реальное имя: Лопáрь (Андрей)

Репутация: -  159  +


Цитата(Artem7 @ 22.02.2012 12:41) *

Да не так не пойдёт мне надо именно через цикл по параметру а то что 3 попытки да это просто так нужно для цикла по параметру вот только как сделать чтоб выход был после ввода правильного.

По-любому тут цикл for не катит, потому что после него переменная цикла не определена. Можно, конечно, засунуть весь функционал программы в блок или в процедуру, а также использовать goto, но все это будет через задницу (особвенно последнее). Так что лучше все же repeat.
Введи счетчик вот так:

n:= 3;
writeln('введите пароль (не более ',n,' раз)');
i:= 0;
repeat
inc(i);
if i>n then exit; // после n попыток выходим
readln(s);
until s = pr;
.... // дальше делаем, что надо


--------------------
я - ветер, я северный холодный ветер
я час расставанья, я год возвращенья домой
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Artem7
сообщение 22.02.2012 12:18
Сообщение #7


Пионер
**

Группа: Пользователи
Сообщений: 54
Пол: Мужской

Репутация: -  0  +


Цитата(Lapp @ 22.02.2012 11:54) *

По-любому тут цикл for не катит, потому что после него переменная цикла не определена. Можно, конечно, засунуть весь функционал программы в блок или в процедуру, а также использовать goto, но все это будет через задницу (особвенно последнее). Так что лучше все же repeat.
Введи счетчик вот так:

n:= 3;
writeln('введите пароль (не более ',n,' раз)');
i:= 0;
repeat
inc(i);
if i>n then exit; // после n попыток выходим
readln(s);
until s = pr;
.... // дальше делаем, что надо


Я бы не стал заморачиваться с циклом по параметру если бы не задача, просто мне дали задание через этот цикл реализовать прогу про пароль)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 2:36
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"