LINUX.ORG.RU
ФорумTalks

Сравнение чисел в паскале.


0

0
Как заставить паскаля (имеется ввиду язык программирования) сравнивать два числа с двумя другими. Например
...
if 1<A<10 and 1<B<10 then
какой-то оператор
else
истчо оператор
...
Такая конструкция не работает. Вопрос заключается в том как заставить паскаль сравнивать числа подобным образом.
>Как заставить паскаля (имеется ввиду язык программирования) сравнивать два числа с двумя другими

Нужно не паскаль заставить, а тебя, неуча, заставить его выучить

anonymous
()
a>1 and a<10 and b>1 and b<10 чем не устраивает?
true
()
Ответ на: комментарий от anonymous
выражения "x in [..]" в круглые скобки надо, ИМХО
anonymous
()
if 1<A<10 and 1<B<10 then

<введи переменную для удобства> := A;

<введи переменную для удобства2> := B;

if переменная 1 > переменная 2 then

<нужное действие>

else

<получится, что В больше А, и делаешь, что нужно по программе>

<программа идёт дальше>

Вроде бы так, хотя я за паскаль давно не брался :(

anonymous
()
if 1<A<10 and 1<B<10 then

<введи переменную для удобства> := A;

<введи переменную для удобства2> := B;

if переменная 1 > переменная 2 then

<нужное действие>

else

<получится, что В больше А, и делаешь, что нужно по программе>

<программа идёт дальше>

Вроде бы так, хотя я за паскаль давно не брался :(

anonymous
()

Как заставить школьника думать должным образом?

>Такая конструкция не работает. Вопрос заключается в том как заставить паскаль сравнивать числа подобным образом.

Такая конструкция действительно не работает. Задача кодера в том и состоит, чтобы на каком-то абстрактном языке, например Pascal, описать то, что он видит на другом языке, будь то русский или язык математических кванторов.

Camel ★★★★★
()
Это можно сделать за 3 операции сравнения.

soomrack ★★★★★
()
Синтаксис вида (A in [1..10]) and (B in [1..10]) работает как надо.
Camel, я не школьник. Программирование мне нужно лишь для написания некоторых программ упрощающих жизнь, например считать среднеквадратичную погрешность, которую даже в maple считать замучаешься. А так как нормальной книги по которой можно учиться и где все растолковано на пальцах найти крайне сложно (не только по программированию, так со всеми науками) приходится каждый раз изобретать велосипеды (кстати так построена система образования в штатах и некоторых европейских странах, где студентов заставляют самим до всего доходить).
ArcticFox
() автор топика
Ответ на: комментарий от ArcticFox
>Синтаксис вида (A in [1..10]) and (B in [1..10]) работает как надо.

Множества работают только с однобайтовыми типами.
madcore ★★★★★
()
> if 1<A<10 and 1<B<10 then Разумеется. не работает. Потому что операция and имеет больший приоритет, чем операции сравнения, потому сравнение необходимо заключить в скобки. Например, вот так: if (1<a<10) and (1<b<10) then begin <бла-бла-бла> end else begin <бла-бла-бла> end;
Flaming ★★
()
Ответ на: комментарий от madcore
Что же делать если больше байта?
Кстати и почему нельзя использовать A>1 and A<10 and B>1 and B<10 ? Это по-моему самое очевидное решение, но оно не работает.
ArcticFox
() автор топика
Ответ на: комментарий от ArcticFox
> if 1<A<10 and 1<B<10 then Разумеется. не работает. Потому что операция and имеет больший приоритет, чем операции сравнения, потому сравнение необходимо заключить в скобки. Например, вот так: if (1<a<10) and (1<b<10) then begin <бла-бла-бла> end else begin <бла-бла-бла> end;

Да, так тоже работает, спасибо за разъяснения.
ArcticFox
() автор топика
Ответ на: комментарий от ArcticFox
>A>1 and A<10 and B>1 and B<10 потому попробуй поставить условия в скобки и посмотри что получится
s0ul
()
Ответ на: комментарий от generatorglukoff
> рекомендую выбросить паскаль и выучить питон

Рекомендую выбросить комп и исходить к проституткам.

anonymous
()
Ответ на: комментарий от ArcticFox
>>>ы (кстати так построена система образования в штатах и некоторых европейских странах, где студентов заставляют самим до всего доходить).

Всегда считал это "визитной карточкой" советских ВУЗов.

SI ★★☆☆
()
Ответ на: комментарий от ArcticFox
>>>Camel, я не школьник. П

А чего Паскаль - в научных кругах был всегда моден Фортран.

SI ★★☆☆
()
Ответ на: комментарий от ArcticFox
> жизнь, например считать среднеквадратичную погрешность

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

iBliss
()
Ответ на: комментарий от generatorglukoff
> рекомендую выбросить паскаль и выучить питон

Питон, конечно, проще по синтаксису и гибче по возможностям, но зато он тормоз откровенный, даже bash шустрее, притом, что оба скриптовые.

Что же все так взъелись? Как будто у самих не было таких глупых ошибок в процессе изучения трубопаскакаля?

Flaming ★★
()
Ответ на: комментарий от ArcticFox
имхо лучше не страдать паскалем, а заюзать акойнить питон в качестве калькулятора
Syncro ★★★★★
()
Ответ на: комментарий от iBliss
SI, я не особо следил за модой.

>Ты сначала порядок следования арифметических операций выучи.


Операция and логическая. С математической точки зрения все верно.
ArcticFox
() автор топика
Ответ на: комментарий от Flaming
Flaming, есть такое выражение "земли под собой не видит" =)

P.S. Меня паскаль по функциональности вполне устраивает.
ArcticFox
() автор топика
Ответ на: комментарий от ArcticFox
>>SI, я не особо следил за модой.

Чего то долго не следит то - фортран он настолько консервативен ...

SI ★★☆☆
()
Ответ на: комментарий от SI
Че ты прицепился,тебе вообще какое дело что я использую?
ArcticFox
() автор топика
Ответ на: комментарий от iBliss
Точнее AND по приоритету соответствует умножению и делению.
iBliss
()
Ответ на: комментарий от iBliss
4+5
------- = 3
3

Такая запись верна?)) В мэпле для такой операции непременно нужны скобки. То же самое и с логическими операциями. Никто не пишет (A>3) и (A<5). Пишут A>3 и A<5 или 3<A<5. Никаких нарушений приоритета нет и запись верна.
ArcticFox
() автор топика
Ответ на: комментарий от ArcticFox
> Никаких нарушений приоритета нет и запись верна.

Еще раз, приоритет операции AND соответствует приоритету умножения и деления. Т.е. При записи A>3 and A<5 предварительно осуществляется битовая операция AND тройки и текущего значения A, а потом выполняется сравнение.

> Никто не пишет (A>3) и (A<5).

Именно так и пишут. И это не паскаль - это булева алгебра.

iBliss
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.