|
условие в паскаль |
☑ |
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" - всё равно без условий можно :)
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший