Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ красивая задача

Автор: мисс_граффити 12.05.2006 23:52

Есть три целочисленных переменных (a,b,c). Надо вывести на экран ту, значение которой минимально.
Фишка в том, что использовать циклы и условные операторы нельзя.

Формально ограничений на язык не накладывается, но обещали, что средств Паскаля хватит.
Главное - конструктивная идея.

Была мысль про исключения...
Ну допустим при a<b ln(a-b) будет фигней, а при a>b прекрасно обработается. Но этот вариант был принят условно. Говорят, существует решение совсем без условий....

У вас тут с мыслями порядок... может, придумается что......

Автор: volvo 13.05.2006 0:01

мисс_граффити,
для 2-х чисел задача решается так:

var
a, b: integer;

begin
a := 10; b := 12;
writeln('min(a, b) = ',
(((((a-b)/abs(a-b)))*(-1)+abs(((a-b)/abs(a-b))))/2)*a +
(((((b-a)/abs(b-a)))*(-1)+abs(((b-a)/abs(b-a))))/2)*b
);
end.
Лениво сейчас то же самое добавлять еще раз... Просто присвой промежуточный результат в какую-то переменную, и проделай то же самое с ней и "С"... smile.gif

Автор: volvo 13.05.2006 1:12

P.S. Кстати, упрощаем выражение:


Прикрепленные файлы
Прикрепленный файл  ver_02.pas ( 111 байт ) Кол-во скачиваний: 150

Автор: мисс_граффити 13.05.2006 1:19

супер!
с такой скоростью решил или знал?

Автор: lapp 13.05.2006 9:43

Вот мое решение (для трех чисел). В нем нет условных операторов, хотя есть сами условия. Впрочем, их тоже можно избежать..

const
a:integer=2;
b:integer=300;
c:integer=-10;

var
d:array[false..true]of integer;

begin
d[false]:=a;
d[true]:=b;
d[false]:=d[a>b];
d[true]:=c;
d[false]:=d[d[false]>c];
WriteLn(d[false]);
end.

Первое решение volvo не годится - там может возникнуть деление на ноль.
Второе - класс, очень красиво, respect! smile.gif
Почему-то я сразу стал думать в русле программирования, забыв про общую математику.. sad.gif

P.S.
volvo, не мог ли бы ты из некоторого сочувствия к другим как-то прикрывать решения подобных задач (скажем, цветом фона)? Мне повезло, что я сразу не скользнул взглядом по решению, успел отвернуться..

Автор: volvo 13.05.2006 14:53

Цитата(lapp @ 13.05.2006 5:43)
volvo, не мог ли бы ты из некоторого сочувствия к другим как-то прикрывать решения подобных задач (скажем, цветом фона)?
Нет, я лучше буду присоединять решения отдельным файлом. Пока не захочешь - не увидишь smile.gif См. выше, исправлено... Пойдет?

А цвет фона может изменяться в зависимости от выбранного скина и браузера...

Автор: мисс_граффити 13.05.2006 15:23

lapp, тоже красиво.
я уточню, можно ли с условиями с таком виде. думаю, что да: ведь никаких ветвлений нет, а ограничения были именно на них.
-----------
если интересно, могу иногда подобные задачи кидать.
то есть если вам самим в удовольствие, а не как 1725-й раз писать "пользуйтесь поиском".

Автор: lapp 13.05.2006 15:41

Цитата(мисс_граффити @ 13.05.2006 12:23) *

если интересно, могу иногда подобные задачи кидать.

Конечно, интересно. smile.gif