Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Free Pascal, Pascal ABC и другие _ простейшая задача на условный оператор

Автор: compiler 9.04.2007 19:34

Добрый день!
как-то немогу решить простейшую задачу...
нужна функция которая возвращает 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 9.04.2007 19:45

function ReadAns():boolean;
var
ans: string;
begin
readLn(ans);
result := (ans = '1') or (ans = 'y') or (ans = 'take') or ... ;
end;


Автор: Malice 9.04.2007 19:58

Вот так можно:

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

Автор: volvo 9.04.2007 20:02

Malice, решение не соответствует заданию:

  readLn(ans); // <-- Вводим: "1@true"
и?

Автор: compiler 9.04.2007 20:12

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

Автор: мисс_граффити 9.04.2007 20:58

result - это переменная, ассоциированная с именем функции.
если компилятору не нравится (ТР?) замени на имя функции... Условный оператор тут - излишество.

Автор: volvo 9.04.2007 21:03

Цитата
(ТР?)
Не может быть... В TP компилятору бы не понравилось:
Цитата
function ReadAns():boolean;
, поэтому и было приведено решение с result, под FPC ...

Автор: arhimag 9.04.2007 21:08

Код

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

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

Пардон. Ошибся, когда перепечатывал.

Автор: мисс_граффити 9.04.2007 21:25

arhimag, убедительная просьба проверять код до выкладывания на форум.
начните, пожалуйста, с изучения порядка передаваемых функции pos аргументов.

Автор: compiler 9.04.2007 21:33

Цитата(volvo @ 9.04.2007 17:03) *

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

Автор: volvo 9.04.2007 21:44

Прикрепленное изображение
Интересно, правда?

Какая у тебя совместимость выставлена в "Options -> Compiler -> (вкладка Syntax) -> Compiler Mode" ?

Автор: compiler 9.04.2007 21:53

Цитата(volvo @ 9.04.2007 17:44) *
Интересно, правда?

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

Автор: volvo 9.04.2007 21:59

Самой первой строкой программы добавь {$mode delphi} и перекомпилируй программу, что будет?

Автор: compiler 9.04.2007 22:02

Цитата(volvo @ 9.04.2007 17:59) *
Самой первой строкой программы добавь {$mode delphi} и перекомпилируй программу, что будет?

компилироваться smile.gif а что значит {$mode delphi}? только тогда у меня возникают ошибки в другом месте...

Автор: volvo 9.04.2007 22:05

Это значит, что ты написал программу с использованием синтаксиса Дельфи, и хочешь, чтобы FPC, компилируя эту программу, знал об этом и использовал НЕ синтаксис TP или диалектов FreePascal, а именно Делфийский синтаксис... О различиях MODE - читай в доках, там все изложено...

Автор: мисс_граффити 9.04.2007 22:12

В связи с изменением направления дискуссии тема переносится в более подходящий раздел.