Помощь - Поиск - Пользователи - Календарь
Полная версия: Получение ответов вида y\n
Форум «Всё о Паскале» > Pascal, Object Pascal > Теоретические вопросы
habi
Как лучше реализовать? =)
Если пользователь ввёл y, то условие тру, если n то фалс..

Задача: сделать защиту от "дурака".
Тип переменной ans, в которую передаётся нажатие пользователем клавишь, char.

Пробывал сделать через вайл, но почему-то не обнуляется потом переменная ans

while (ans='y') or (ans='n') do
begin
if .... then ... else...
end;



Так же сделал, через отдельную функцию, которая выводила окно, с 3 кнопками, да\нет\отмена =) но задание курсовой не позволяет ввести такое окно.
Так как же проверять значение лучше? :]
compiler
ты это имел ввиду?
uses crt;

function q: boolean;
var ch : char;
begin
repeat ch:= readkey; until ch in ['y', 'n'];
if ch = 'y'
then begin writeln('yes'); q:=true; end
else begin writeln('no'); q:=false; end;
end;
habi
Нет, а если пользователь введёт u, промахнётся, то что? =)
Нужно жёстко зациклить этот вопрос, пока не будет верного ответа.
volvo
Цитата
Нет, а если пользователь введёт u, промахнётся, то что? =)
Ну, попробуй, введи... Что будет? smile.gif
habi
будет ноу, а у меня при всех введёных буквах, кроме у, идёт выполнение операции.
Если я хотел выполнить её, но промахнулся..нажал ентер, всё =)
Это проверка стоит, на кнопке выход и некоторых других.
Теперь понятная суть?

Для считывания имён файлов, я сделал конструкцию вида
Код

fail:='';      {переменная  типа string}
       while fail='' do
       begin
       writeln('Введите имя файла:');
       readln(fail);
       end;
       ...
       дальше идёт работа с файлом, если его имя заполнено, в этой процедуре, этого хватает


Вопрос: можно ли не меняя типа переменной обнулять переменные с типом char? :]
compiler
Цитата(habi @ 15.05.2008 21:13) *
Теперь понятная суть?
нет, так
function q2: boolean;
var str : string;
begin
readln(str);
if str='yes' then q2:=true else q2:=false;
end; { q2 }
Цитата(habi @ 15.05.2008 21:13) *
Вопрос: можно ли не меняя типа переменной обнулять переменные с типом char? :]
ну.. под обнулением целых чисел подразумевается предание им определённого значения... присваивай своим переменным пробел..
volvo
Цитата
будет ноу
Не будет, пока ты не нажмешь "y" или "n", программа не выйдет из цикла...
habi
=)
не увидел антил..спасибо за алгоритм :]
Спасибо.

Проблема была в обнуление, присвоил ans пробел, и всё окей =)как в первом варианте.
andriano
Цитата(compiler @ 15.05.2008 21:53) *

ты это имел ввиду?
uses crt;

function q: boolean;
var ch : char;
begin
repeat ch:= readkey; until ch in ['y', 'n'];
if ch = 'y'
then begin writeln('yes'); q:=true; end
else begin writeln('no'); q:=false; end;
end;


По правилам хорошего тона:

repeat ch:= readkey; until ch in ['y', 'Y', 'д', 'Д', 'n', 'N', 'н', 'Н'];
if ch in ['y', 'Y', 'д', 'Д'] then ...
else if ch in ['n', 'N', 'н', 'Н'] then ...

Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.