|
условие в паскаль | ☑ | ||
---|---|---|---|---|
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" - всё равно без условий можно :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |