Имя: Пароль:
IT
 
условие в паскаль
0 program345
 
28.08.14
14:40
доброго дня!
есть условие если а>b - первый вариант
если а<b - второй вариант
если а=b - третий

можно ли записать условие в паскале покороче чем я:
if a>b then
write('1');
  else if a=b then
             write('3');
else write(2);
1 Ненавижу 1С
 
гуру
28.08.14
14:44
можно, но зачем?
2 Ненавижу 1С
 
гуру
28.08.14
14:49
Write(a>b?1:a=b?3:2);
3 Крошка Ру
 
28.08.14
14:51
Write(2+((a-b)/Sqrt(Sqr(a-b))));
4 Крошка Ру
 
28.08.14
14:51
Тока при a=b не работает, а так - нормально
5 Крошка Ру
 
28.08.14
14:52
Ах черт, варианты перепутал
6 Ненавижу 1С
 
гуру
28.08.14
14:52
+(2) только это работает не в обычном паскале, а в PascalABC.NET
7 _fvadim
 
28.08.14
14:54
(3) в пасе abs есть, плюс перед выводом inttostr надо. или даже floattostr
8 Крошка Ру
 
28.08.14
15:00
(7) abs() - это тоже условие.
А inttostr - не надо. По крайней мере, во времена ТП 7.0 было не надо.
9 _fvadim
 
28.08.14
15:02
(8) "abs() - это тоже условие"
а вот это необязательно, может там знаковый бит в нолик ставится и всё.
10 Крошка Ру
 
28.08.14
15:03
(9) Какой знаковый бит?
11 _fvadim
 
28.08.14
15:04
(10) ну я имею в виду внутреннюю реализацию функции.
для integer знак числа определяется старшим битом. 0 - положительное, 1 - отрицательное
12 _fvadim
 
28.08.14
15:05
соответственно abs можно реализовать без условий.
13 _fvadim
 
28.08.14
15:06
для чисел с плавающей точкой, вроде, так же
14 _fvadim
 
28.08.14
15:09
integer -32768..+32767
word 0..65535
оба занимают 2 байта, у integer старший бит под знак, поэтому число вдвое меньше
15 Крошка Ру
 
28.08.14
15:12
(11) (14) Какой ты хитрый! В целочисленном знаковом представленнии всё немого сложнее знакового бита.
-а = NOT а + 1

Т.е. для ShortInt:

a=15; 'a=00001111'
-a=-15; 'a=11110000+00000001=11110001

Это делается для того, чтобы и знаковые и беззнаковые целочисленные можно было складывать по одним правилам:
a+(-a) = 0;
'a+(-a) = 00001111+11110001 = 00000000'
16 Крошка Ру
 
28.08.14
15:14
(13) А для real всё ещё сложнее.
17 _fvadim
 
28.08.14
15:16
(15) точно. вот про это совсем забыл.
18 _fvadim
 
28.08.14
15:20
загуглил "asm abs" - всё равно без условий можно :)