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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.