LazarusLong
Ирландский доброволец
Проректор
Карма: +181/-7
Offline
Пол: Награды:
Сообщений: 6134
Ukrainian by birth, Irish by the grace of God
|
|
« : Июль 22, 2007, 09:51:25 » |
|
Даны две целочисленные переменные. Вывести значение большей из них. Не использовать условные конструкции типа if, case, switch и т.п. Также не использовать логические операторы (>, <. >=, <=, ==, != и т.п.). Также запрещено использование ЛЮБЫХ функций сравнения типа strcmp (то есть вариант преобразовать в строку и сравнить не проходит ), min, max и т.п. Да.... поразрядные операции, всякие там сдвиги, побитовые и, или, не, хор и т.п. тоже не использовать. Ответы принимаются на С/С++ (в принципе решить можно на чем угодно, но ответ должен быть представлен на С/С++).
|
|
« Последнее редактирование: Август 01, 2007, 10:36:42 от vimmax »
|
Записан
|
Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
"...Он любил говорить факин щит Когда что-то не так ему Принимал он свой самый ирландский вид И кидался трубкой в жену..."
|
|
|
LazarusLong
Ирландский доброволец
Проректор
Карма: +181/-7
Offline
Пол: Награды:
Сообщений: 6134
Ukrainian by birth, Irish by the grace of God
|
|
« Ответ #1 : Июль 22, 2007, 10:07:09 » |
|
Оператор ? тоже не использовать
|
|
|
Записан
|
Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
"...Он любил говорить факин щит Когда что-то не так ему Принимал он свой самый ирландский вид И кидался трубкой в жену..."
|
|
|
NunTerix
|
|
« Ответ #2 : Июль 22, 2007, 12:23:53 » |
|
Мозги полезно напрягать? Наверное ... Тогда моё решение вот :
main () { int a, b, r, p; printf ("Введите первое целочисленное число "); scanf ("%d", &a); printf ("Введите второе целочисленное число "); scanf ("%d", &b);
r=fabs(a-b); p=(((a+b-r)/2)+r);
printf("%d является максимальным из введенных чисел", p); return 0; };
P.S. Интересно, а "goto" можно было использовать ... P.S.S. Помоему в мае с нашего факультета ездила команда на олимпиаду по программированию в Киев ... не знаю что там и как, но больше всего меня поразило, то что я об этом узнал совершенно случайно ... никакого ни объявления ... ни каких отборочных на олимпиаду ... как набирали команду ... загадка ... А я хотел поехать ... но узнав слишком поздно и не найдя господина Дегтяренко (который вроде бы заведовал набором "олимпиадчиков") тогда в пятницу, я отпустил это желание ... и кое в чём разочаровался ... Вот так вот ... тебе и КИТы ...
|
|
|
Записан
|
Сердце может прибавить ума, но ум не может прибавить сердца.
|
|
|
NunTerix
|
|
« Ответ #3 : Июль 22, 2007, 01:16:23 » |
|
Дерективы тоже можно добавить:#include <stdio.h> #include <math.h> ... ... А последнюю точку с запятой убрать ... печатал в спешке
|
|
|
Записан
|
Сердце может прибавить ума, но ум не может прибавить сердца.
|
|
|
LazarusLong
Ирландский доброволец
Проректор
Карма: +181/-7
Offline
Пол: Награды:
Сообщений: 6134
Ukrainian by birth, Irish by the grace of God
|
|
« Ответ #4 : Июль 22, 2007, 01:25:26 » |
|
Да директивы - то не сильно важно. И точка с запятой тоже . Важна суть решения. А решение верное. Заслуженный +1. Но викторина не завершается. Существует еще как минимум одно решение. ЗЫ. goto использовать можно, равно как и инструкции циклов. Мозги полезно напрягать? Наверное ...
Чтобы не расслаблялись тут на каникулах
|
|
|
Записан
|
Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
"...Он любил говорить факин щит Когда что-то не так ему Принимал он свой самый ирландский вид И кидался трубкой в жену..."
|
|
|
Sochin
Злой модератор
Декан
Карма: +108/-6
Offline
Пол:
Сообщений: 1518
|
|
« Ответ #5 : Июль 22, 2007, 06:20:27 » |
|
А решение верное. Заслуженный +1.
ха-ха-ха. Башоргчег. ))
|
|
|
Записан
|
Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил... 壯鎭
|
|
|
naxellar
Главный флудер
Проректор
Карма: +101/-52
Offline
Пол:
Сообщений: 5015
Главный флудер
|
|
« Ответ #6 : Июль 23, 2007, 10:55:26 » |
|
|
|
|
Записан
|
|
|
|
BODROV
Mодератор
Доцент
Карма: +37/-1
Offline
Пол:
Сообщений: 550
хде я?
|
|
« Ответ #7 : Июль 23, 2007, 01:46:55 » |
|
... использовать можно ... инструкции циклов.
Также не использовать логические операторы (>, <. >=, <=, ==, != и т.п.). не сходиться
|
|
|
Записан
|
|
|
|
Sochin
Злой модератор
Декан
Карма: +108/-6
Offline
Пол:
Сообщений: 1518
|
|
« Ответ #8 : Июль 23, 2007, 02:05:32 » |
|
... использовать можно ... инструкции циклов.
Также не использовать логические операторы (>, <. >=, <=, ==, != и т.п.). не сходиться Ну почему же? Цикл может быть безусловным. )
|
|
|
Записан
|
Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил... 壯鎭
|
|
|
LazarusLong
Ирландский доброволец
Проректор
Карма: +181/-7
Offline
Пол: Награды:
Сообщений: 6134
Ukrainian by birth, Irish by the grace of God
|
|
« Ответ #9 : Июль 23, 2007, 03:10:10 » |
|
Циклы можно использовать в том смысле - что я не возражаю против их применения. Хотя и не могу представить, как их можно сюда прикрутить. Впрочем, в условии цикла совсем не обязательно должен встречаться условный оператор. Условие цикла это вообще выражение целого типа где 0 - ложь, а все остальное истина. К примеру Очевидно, что цикл будет выполнятся, пока i не станет равным нулю . ЗЫ: naxellar, насчет fabs - RTFM
|
|
|
Записан
|
Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
"...Он любил говорить факин щит Когда что-то не так ему Принимал он свой самый ирландский вид И кидался трубкой в жену..."
|
|
|
Sochin
Злой модератор
Декан
Карма: +108/-6
Offline
Пол:
Сообщений: 1518
|
|
« Ответ #10 : Июль 23, 2007, 03:17:30 » |
|
Циклы можно использовать в том смысле - что я не возражаю против их применения. Хотя и не могу представить, как их можно сюда прикрутить. Гы. Я уже представил... С#-меговариант готов. Ща его же на С++ забацаю. ))
|
|
|
Записан
|
Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил... 壯鎭
|
|
|
LazarusLong
Ирландский доброволец
Проректор
Карма: +181/-7
Offline
Пол: Награды:
Сообщений: 6134
Ukrainian by birth, Irish by the grace of God
|
|
« Ответ #11 : Июль 23, 2007, 03:18:34 » |
|
Ню-ню... ждемс
|
|
|
Записан
|
Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
"...Он любил говорить факин щит Когда что-то не так ему Принимал он свой самый ирландский вид И кидался трубкой в жену..."
|
|
|
Sochin
Злой модератор
Декан
Карма: +108/-6
Offline
Пол:
Сообщений: 1518
|
|
« Ответ #12 : Июль 23, 2007, 03:42:27 » |
|
Таксь, готово. Итак, общая идея метода: из двух целых чисел с разными знаками, очевидно, больше неотрицательное число. Из двух отрицательных чисел больше то, которое по шкале чисел ближе к нулю. Из двух неотрицательных чисел больше то, которое дальше от нуля. int main () { int a = 10; int b = -10000;
try { double dd = sqrt(a); } catch(...) { //здесь a < 0; try { double dd1 = sqrt(b); } catch(...) { //здесь a < 0 и b < 0 int i = 1;
while (1) { try { double dd2 = a / (a + i); } catch(...) { cout << a << " является максимальным из чисел"; return 1; } try { double dd3 = b / (b + i); } catch(...) { cout << b << " является максимальным из чисел"; return 1; } i++; } } //здесь a < 0 и b >= 0 cout << b << " является максимальным из чисел"; return 1; } //здесь a >= 0 try { double dd4 = sqrt(b); } catch(...) { // здесь a >= 0 и b < 0 cout << a << " является максимальным из чисел"; return 1; }
// здесь a >= 0 и b >= 0 int j = 0;
while (1) { try { double dd5 = a / (a - j); } catch(...) { cout << b << " является максимальным из чисел"; return 1; }
try { double dd6 = b / (b - j); } catch(...) { cout << a << " является максимальным из чисел"; return 1; } j++; } } Код на С++ не тестил, лениво ставить компилятор С++ только для этого. Так что возможны опечатки.
|
|
|
Записан
|
Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил... 壯鎭
|
|
|
LazarusLong
Ирландский доброволец
Проректор
Карма: +181/-7
Offline
Пол: Награды:
Сообщений: 6134
Ukrainian by birth, Irish by the grace of God
|
|
« Ответ #13 : Июль 23, 2007, 03:55:53 » |
|
16 ошибок .
|
|
|
Записан
|
Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
"...Он любил говорить факин щит Когда что-то не так ему Принимал он свой самый ирландский вид И кидался трубкой в жену..."
|
|
|
Sochin
Злой модератор
Декан
Карма: +108/-6
Offline
Пол:
Сообщений: 1518
|
|
« Ответ #14 : Июль 23, 2007, 03:56:50 » |
|
Ох ее )))
|
|
|
Записан
|
Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил... 壯鎭
|
|
|
LazarusLong
Ирландский доброволец
Проректор
Карма: +181/-7
Offline
Пол: Награды:
Сообщений: 6134
Ukrainian by birth, Irish by the grace of God
|
|
« Ответ #15 : Июль 23, 2007, 04:06:43 » |
|
Но даже после выправления синтаксиса не работает , Вылаетает с ошибками Да и вообще есть способ гораздо проще. Буквально в три строки .
|
|
|
Записан
|
Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.
"...Он любил говорить факин щит Когда что-то не так ему Принимал он свой самый ирландский вид И кидался трубкой в жену..."
|
|
|
Sochin
Злой модератор
Декан
Карма: +108/-6
Offline
Пол:
Сообщений: 1518
|
|
« Ответ #16 : Июль 23, 2007, 04:07:37 » |
|
Но даже после выправления синтаксиса не работает , Вылаетает с ошибками Да и вообще есть способ гораздо проще. Буквально в три строки . Ну клево что есть в три. Зато у меня мего-способ. )) И все там работает... ща буду ставить билдер. )))
|
|
|
Записан
|
Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил... 壯鎭
|
|
|
NunTerix
|
|
« Ответ #17 : Июль 23, 2007, 06:38:19 » |
|
Я не стал свой второй способ выкладывать ... может кто то ещё решит ... А вообще я удивлён такой малой популярностью этой викторины ... и даже задача не из мега сложных же (((
|
|
|
Записан
|
Сердце может прибавить ума, но ум не может прибавить сердца.
|
|
|
naxellar
Главный флудер
Проректор
Карма: +101/-52
Offline
Пол:
Сообщений: 5015
Главный флудер
|
|
« Ответ #18 : Июль 24, 2007, 01:48:18 » |
|
ЗЫ: naxellar, насчет fabs - RTFM
Я догадусь, что это модуль, но почему f в начале?
|
|
|
Записан
|
|
|
|
NunTerix
|
|
« Ответ #19 : Июль 24, 2007, 06:58:48 » |
|
ЗЫ: naxellar, насчет fabs - RTFM
Я догадусь, что это модуль, но почему f в начале? Загляни в какой нибудь справочник по С и скажи мне какая функция абсолютного значения?
|
|
|
Записан
|
Сердце может прибавить ума, но ум не может прибавить сердца.
|
|
|
|