Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Pascal


Страницы:   1 2 3

******* ©   (2004-11-12 20:48:00) 

В одной книге вопрос?
Записать группу команд

First:=First+1;
if First>max then
First:=1

одной командой на языке Pascal. Кто знает?


jack128   (2004-11-21 12:36:00) [1]

Pat ©   (18.11.04 12:06) [42]
вот примерно так:
Pat ©   (20.11.04 0:32) [47]

;-)


Кто---то   (2004-11-21 04:19:00) [2]

Ну, чего никто не может ?
А используя всякие and or xor и т п ?


KilkennyCat   (2004-11-21 03:26:00) [3]


> Кто---то ©   (21.11.04 03:17) [53]


> С логическими операторами и дурак сделает.


то есть, если я не смогу, я - вообще даун?
нафига спрашивали, если такой умный.


Кто---то   (2004-11-21 03:17:00) [4]


> GuAV ©   (21.11.04 02:44) [52]
> Кто---то ©   (21.11.04 2:39) [51]
> :)
> v := v * ord(abs(V) < 77) + ord(abs(v) >= 77) * 77 * sign(v);


С логическими операторами и дурак сделает.


GuAV   (2004-11-21 02:44:00) [5]

Кто---то ©   (21.11.04 2:39) [51]
:)
v := v * ord(abs(V) < 77) + ord(abs(v) >= 77) * 77 * sign(v);


Кто---то   (2004-11-21 02:39:00) [6]

А такое задание.
Можно ли одной формулой сделать следующее :

if      v >  77 then v :=  77
else if v < -77 then v := -77;


default   (2004-11-20 01:36:00) [7]

Defunct ©   (20.11.04 01:28) [49]
да, не принципиально
но вряд-ли в книге такой изврат имелся ввиду скорее просто if


Defunct   (2004-11-20 01:28:00) [8]

default ©   (20.11.04 00:50) [48]

[41]
на одно сложение меньше


default   (2004-11-20 00:50:00) [9]

First := Byte(First + 1 <= max) * First + 1


Pat   (2004-11-20 00:32:00) [10]

Извините за долгое отсутствие - жена, работа.. :)
>SergP ©   (19.11.04 5:13) [46]
var p1,p2:PChar;
begin
p1:='В лесу родилась елочка';
p2:='В лесу она росла';
showmessage(p1+#13+p2);
p1:=pointer(integer(p1) xor integer(p2));
p2:=pointer(integer(p1) xor integer(p2));
p1:=pointer(integer(p1) xor integer(p2));
showmessage(p1+#13+p2);
end;


SergP   (2004-11-19 05:13:00) [11]


>  [32] Pat ©   (16.11.04 23:20)
> >SergP ©   (16.11.04 22:21) [31]
> Строки одинаковой длины? :-)


Допустим имеются две нуль-терминальных строки (pchar) одинаковой длины.

Дополнительных переменных не использовать совсем.


Кто---то   (2004-11-19 03:09:00) [12]


> Тестировщица ©   (12.11.04 21:26) [13]
> Verg ©   (12.11.04 21:07) [6] Может, лучше  так:
> First:=(First mod max)+1;

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


Defunct   (2004-11-19 01:16:00) [13]

_Lucky_  
А [40] видели.
First := First * byte( First <= Max );

Pas все таки лучше.


_Lucky_   (2004-11-18 23:35:00) [14]

Pas
First := (byte (Not ((First + 1) > Max))) * (First + 1) + (byte (((First + 1) > Max)));
- хрен разберешь, предидущие решения куда приятнее :-)

C++
nFirst = (((nFirst+1) > nMax) ? (1) : (nFirst+1));


Pat   (2004-11-18 12:06:00) [15]

Defunct ©   (17.11.04 0:30) [36]
Это уже олимпиадная задачка. Больше интересуют задачи на формат данных, хранение в памяти (например то, что в памяти вначале записываются младшие байты для word, integer) и т.д.
>jack128 ©   (17.11.04 1:53) [37]
Напиши как.. :)


Defunct   (2004-11-17 04:33:00) [16]

> First:=First+1;
> if First>max then
> First:=1

 First := 1+(First * byte(First < Max));


Defunct   (2004-11-17 04:22:00) [17]

> Тоже самое, но чтобы
> if First > max then First := 0

или еще тупее:
First := First * byte( First <= Max );


Defunct   (2004-11-17 04:16:00) [18]

> Тоже самое, но чтобы
> if First > max then First := 0

First := (First mod (max + 1)) * byte((First div (max + 1))=0 );


Кто---то   (2004-11-17 04:05:00) [19]


> Pat ©   (16.11.04 21:14) [30]
> А есть ли у кого еще такие же прикольные задания?


Тоже самое, но чтобы
if First > max then First := 0


jack128   (2004-11-17 01:53:00) [20]

Pat ©   (16.11.04 23:43) [33], [35]
все гораздо проще (и быстрее!!!) если использовать знание того, что строки - это ССЫЛОЧНЫЕ типы ;-)


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо