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

> Правила раздела!

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

 
 Ответить  Открыть новую тему 
> Получение ответов вида y\n, Интерфейс
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской
Реальное имя: Артём

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


Как лучше реализовать? =)
Если пользователь ввёл y, то условие тру, если n то фалс..

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

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

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



Так же сделал, через отдельную функцию, которая выводила окно, с 3 кнопками, да\нет\отмена =) но задание курсовой не позволяет ввести такое окно.
Так как же проверять значение лучше? :]
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Человек
*****

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

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


ты это имел ввиду?
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;


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской
Реальное имя: Артём

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


Нет, а если пользователь введёт u, промахнётся, то что? =)
Нужно жёстко зациклить этот вопрос, пока не будет верного ответа.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Гость






Цитата
Нет, а если пользователь введёт u, промахнётся, то что? =)
Ну, попробуй, введи... Что будет? smile.gif
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской
Реальное имя: Артём

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


будет ноу, а у меня при всех введёных буквах, кроме у, идёт выполнение операции.
Если я хотел выполнить её, но промахнулся..нажал ентер, всё =)
Это проверка стоит, на кнопке выход и некоторых других.
Теперь понятная суть?

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

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


Вопрос: можно ли не меняя типа переменной обнулять переменные с типом char? :]

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


Человек
*****

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

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


Цитата(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? :]
ну.. под обнулением целых чисел подразумевается предание им определённого значения... присваивай своим переменным пробел..


--------------------
Спасибо!
Удачи!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Гость






Цитата
будет ноу
Не будет, пока ты не нажмешь "y" или "n", программа не выйдет из цикла...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 44
Пол: Мужской
Реальное имя: Артём

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


=)
не увидел антил..спасибо за алгоритм :]
Спасибо.

Проблема была в обнуление, присвоил ans пробел, и всё окей =)как в первом варианте.

Сообщение отредактировано: habi -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

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


Цитата(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 ...

 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

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

 





- Текстовая версия 28.10.2020 19:40
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name