Помощь - Поиск - Пользователи - Календарь
Полная версия: Написать программу без использования "if-then"
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Melian
Всем привет) Очень нужна ваша помощь, написать нужно всего лишь строчку.

Даны 3 числа: А,B,C.
Написать программу, которая выдает 1, если числа расположены по возрастанию и 0, если наоборот. НО запрещается использовать "if-then" и вообще любые циклы. Можно использовать умножение, деление, остатки и т.д.)

var a,b,c,rez:integer;

Begin
WriteLn("Введите 3 числа");
ReadLn(a,b,c);

rez:=(вот это нужно написать)

WriteLn(rez);
End.
TarasBer
integer(a<b)*integer(b<c)
но это нечестно

Ещё такой вариант:

intbits := sizeof(integer)*8;
((a-b) shr (intnits-1))*((b-c) shr (intbits-1))

Основан на том, что у отрицательных чисел старший бит единица, а у положительных - ноль, также он использует то, что Паскаль для всех целых чисел генерирует именно беззнаковый сдвиг (иначе каждый сомножитель будет -1, а не 1, впрочем произведение будет такое же).
Melian
Огромное спасибо!)))
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.