Помощь - Поиск - Пользователи - Календарь
Полная версия: простейшая задача на условный оператор
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Free Pascal, Pascal ABC и другие
compiler
Добрый день!
как-то немогу решить простейшую задачу...
нужна функция которая возвращает true если пользователь ввел 1 or true or take or t or yes or y (варианты можете дополнеть самостоятельно..) или false в противном случае...
мой код
function ReadAns():boolean;
var
ans:string;
begin
readLn(ans);
if (ans= (( ( ('1') or ('true') ) or ('take') ) or ( ('t') or (('yes') or ('y')) ) )) //<==ошибка тут
then ReadAns:=true
else ReadAns:=false;
end;

заранее благодарен!
volvo
function ReadAns():boolean;
var
ans: string;
begin
readLn(ans);
result := (ans = '1') or (ans = 'y') or (ans = 'take') or ... ;
end;

Malice
Вот так можно:
ReadAns:=pos ('@'+ans+'@','@1@true@take@t@yes@y@')>0;
volvo
Malice, решение не соответствует заданию:

  readLn(ans); // <-- Вводим: "1@true"
и?
compiler
result это аналог return в C? у меня компилятору не нравится это..
но мне надо было так(рабочая версия)
function ReadAns():boolean;
{Function processes user's input /
функция обрабатывает ввод пользователя}
var
ans:string;
begin
readLn(ans);
if (ans = '1') or (ans = 'y') or (ans = 'take') or (ans = 'true') or (ans = 't') or (ans = 'yes')
then ReadAns:=true
else ReadAns:=false;
end;

Спасибо!

Добавлено через 2 мин.
решение by Malice не понял sad.gif
мисс_граффити
result - это переменная, ассоциированная с именем функции.
если компилятору не нравится (ТР?) замени на имя функции... Условный оператор тут - излишество.
volvo
Цитата
(ТР?)
Не может быть... В TP компилятору бы не понравилось:
Цитата
function ReadAns():boolean;
, поэтому и было приведено решение с result, под FPC ...
arhimag
Код

result:=(pos('@'+ans+'@','@1@true@take@t@yes@y@')>0) and (pos('@',ans)=0);

Вот исправленное решение Malice
Объясню, как работает. мы в строке "@1@true@take@t@yes@y@" ищем нашу введеную строку с добавленными к началу и концу символами "@". Если нашли, то этот ответ есть в списке верных, а если нет, то нет. Но для того, что бы не работал пример Volvo, мы проверяем на наличие символа "@" в введенный строке(ни в одном правельном ответе нет символа @)

Пардон. Ошибся, когда перепечатывал.
мисс_граффити
arhimag, убедительная просьба проверять код до выкладывания на форум.
начните, пожалуйста, с изучения порядка передаваемых функции pos аргументов.
compiler
Цитата(volvo @ 9.04.2007 17:03) *

Не может быть... В TP компилятору бы не понравилось..
кстате как это на TP написать
Цитата(volvo @ 9.04.2007 17:03) *
, поэтому и было приведено решение с result, под FPC ...
компилятор-FPC ошибка <<Identifier not found "result">>
volvo
Нажмите для просмотра прикрепленного файла
Интересно, правда?

Какая у тебя совместимость выставлена в "Options -> Compiler -> (вкладка Syntax) -> Compiler Mode" ?
compiler
Цитата(volvo @ 9.04.2007 17:44) *
Интересно, правда?

Нажмите для просмотра прикрепленного файла
Цитата(volvo @ 9.04.2007 17:44) *
Какая у тебя совместимость выставлена в "Options -> Compiler -> (вкладка Syntax) -> Compiler Mode" ?
free pascale dialect
volvo
Самой первой строкой программы добавь {$mode delphi} и перекомпилируй программу, что будет?
compiler
Цитата(volvo @ 9.04.2007 17:59) *
Самой первой строкой программы добавь {$mode delphi} и перекомпилируй программу, что будет?

компилироваться smile.gif а что значит {$mode delphi}? только тогда у меня возникают ошибки в другом месте...
volvo
Это значит, что ты написал программу с использованием синтаксиса Дельфи, и хочешь, чтобы FPC, компилируя эту программу, знал об этом и использовал НЕ синтаксис TP или диалектов FreePascal, а именно Делфийский синтаксис... О различиях MODE - читай в доках, там все изложено...
мисс_граффити
В связи с изменением направления дискуссии тема переносится в более подходящий раздел.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.