КИТА unofficial
Ноябрь 23, 2024, 03:07:38 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   ПРАВИЛА Помощь WIKI PDA Войти Регистрация  


Страниц: [1] 2 3  Все   Вниз
  Печать  
Автор Тема: Искусство программиования (задача 6)  (Прочитано 34636 раз)
0 Пользователей и 1 Гость смотрят эту тему.
LazarusLong
Ирландский доброволец
Проректор
*****

Карма: +181/-7
Offline Offline

Пол: Мужской
Награды:
А может я тоже хочу себе награду?
Сообщений: 6134


Ukrainian by birth, Irish by the grace of God


WWW
« : Июль 22, 2007, 09:51:25 »

Даны две целочисленные переменные. Вывести значение большей из них. Не использовать условные конструкции типа if, case, switch и т.п. Также не использовать логические операторы (>, <. >=, <=, ==, != и т.п.). Также запрещено использование ЛЮБЫХ функций сравнения типа strcmp (то есть вариант преобразовать в строку и сравнить не проходит Подмигивающий ), min, max и т.п.

Да.... поразрядные операции, всякие там сдвиги, побитовые и, или, не, хор и т.п. тоже не использовать. Подмигивающий

Ответы принимаются на С/С++ (в принципе решить можно на чем угодно, но ответ должен быть представлен на С/С++).
« Последнее редактирование: Август 01, 2007, 10:36:42 от vimmax » Записан

Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.

"...Он любил говорить факин щит
Когда что-то не так ему
Принимал он свой самый ирландский вид
И кидался трубкой в жену..."
LazarusLong
Ирландский доброволец
Проректор
*****

Карма: +181/-7
Offline Offline

Пол: Мужской
Награды:
А может я тоже хочу себе награду?
Сообщений: 6134


Ukrainian by birth, Irish by the grace of God


WWW
« Ответ #1 : Июль 22, 2007, 10:07:09 »

Оператор ? тоже не использовать Подмигивающий
Записан

Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.

"...Он любил говорить факин щит
Когда что-то не так ему
Принимал он свой самый ирландский вид
И кидался трубкой в жену..."
NunTerix
Декан
*****

Карма: +26/-1
Offline Offline

Пол: Мужской
Сообщений: 1688



« Ответ #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
Декан
*****

Карма: +26/-1
Offline Offline

Пол: Мужской
Сообщений: 1688



« Ответ #3 : Июль 22, 2007, 01:16:23 »

Дерективы тоже можно добавить:
Код:
#include <stdio.h>
#include <math.h>
...
...
А последнюю точку с запятой убрать ... печатал в спешке  Грустный
Записан

Сердце может прибавить ума, но ум не может прибавить сердца.
LazarusLong
Ирландский доброволец
Проректор
*****

Карма: +181/-7
Offline Offline

Пол: Мужской
Награды:
А может я тоже хочу себе награду?
Сообщений: 6134


Ukrainian by birth, Irish by the grace of God


WWW
« Ответ #4 : Июль 22, 2007, 01:25:26 »

Да директивы - то не сильно важно. И точка с запятой тоже Подмигивающий. Важна суть решения. А решение верное. Заслуженный +1.

Но викторина не завершается. Существует еще как минимум одно решение.

ЗЫ. goto использовать можно, равно как и инструкции циклов.

Цитировать
Мозги полезно напрягать? Наверное ...

Чтобы не расслаблялись тут на каникулах Подмигивающий
Записан

Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.

"...Он любил говорить факин щит
Когда что-то не так ему
Принимал он свой самый ирландский вид
И кидался трубкой в жену..."
Sochin
Злой модератор
Декан
*****

Карма: +108/-6
Offline Offline

Пол: Мужской
Сообщений: 1518



« Ответ #5 : Июль 22, 2007, 06:20:27 »

А решение верное. Заслуженный +1.
ха-ха-ха. Башоргчег. ))
Записан

Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил...
壯鎭
naxellar
Главный флудер
Проректор
*****

Карма: +101/-52
Offline Offline

Пол: Мужской
Сообщений: 5015

Главный флудер


« Ответ #6 : Июль 23, 2007, 10:55:26 »

Код:
   r=fabs(a-b);
А что такое fabs?
Записан
BODROV
Mодератор
Доцент
*****

Карма: +37/-1
Offline Offline

Пол: Мужской
Сообщений: 550


хде я?


« Ответ #7 : Июль 23, 2007, 01:46:55 »

... использовать можно ... инструкции циклов.
Также не использовать логические операторы (>, <. >=, <=, ==, != и т.п.).
не сходиться   Непонимающий
Записан
Sochin
Злой модератор
Декан
*****

Карма: +108/-6
Offline Offline

Пол: Мужской
Сообщений: 1518



« Ответ #8 : Июль 23, 2007, 02:05:32 »

... использовать можно ... инструкции циклов.
Также не использовать логические операторы (>, <. >=, <=, ==, != и т.п.).
не сходиться   Непонимающий
Ну почему же? Цикл может быть безусловным. )
Записан

Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил...
壯鎭
LazarusLong
Ирландский доброволец
Проректор
*****

Карма: +181/-7
Offline Offline

Пол: Мужской
Награды:
А может я тоже хочу себе награду?
Сообщений: 6134


Ukrainian by birth, Irish by the grace of God


WWW
« Ответ #9 : Июль 23, 2007, 03:10:10 »

Циклы можно использовать в том смысле - что я не возражаю против их применения. Хотя и не могу представить, как их можно сюда прикрутить. Впрочем, в условии цикла совсем не обязательно должен встречаться условный оператор. Условие цикла это вообще выражение целого типа где 0 - ложь, а все остальное истина.

К примеру

Код:
i = 5
while(i)
{
    i--;
}
Очевидно, что цикл будет выполнятся, пока i не станет равным нулю Подмигивающий.

ЗЫ: naxellar, насчет fabs - RTFM
Записан

Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.

"...Он любил говорить факин щит
Когда что-то не так ему
Принимал он свой самый ирландский вид
И кидался трубкой в жену..."
Sochin
Злой модератор
Декан
*****

Карма: +108/-6
Offline Offline

Пол: Мужской
Сообщений: 1518



« Ответ #10 : Июль 23, 2007, 03:17:30 »

Циклы можно использовать в том смысле - что я не возражаю против их применения. Хотя и не могу представить, как их можно сюда прикрутить.
Гы. Я уже представил... С#-меговариант готов. Ща его же на С++ забацаю. ))
Записан

Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил...
壯鎭
LazarusLong
Ирландский доброволец
Проректор
*****

Карма: +181/-7
Offline Offline

Пол: Мужской
Награды:
А может я тоже хочу себе награду?
Сообщений: 6134


Ukrainian by birth, Irish by the grace of God


WWW
« Ответ #11 : Июль 23, 2007, 03:18:34 »

Ню-ню... ждемс Подмигивающий
Записан

Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.

"...Он любил говорить факин щит
Когда что-то не так ему
Принимал он свой самый ирландский вид
И кидался трубкой в жену..."
Sochin
Злой модератор
Декан
*****

Карма: +108/-6
Offline 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 Offline

Пол: Мужской
Награды:
А может я тоже хочу себе награду?
Сообщений: 6134


Ukrainian by birth, Irish by the grace of God


WWW
« Ответ #13 : Июль 23, 2007, 03:55:53 »

16 ошибок Подмигивающий.
Записан

Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.

"...Он любил говорить факин щит
Когда что-то не так ему
Принимал он свой самый ирландский вид
И кидался трубкой в жену..."
Sochin
Злой модератор
Декан
*****

Карма: +108/-6
Offline Offline

Пол: Мужской
Сообщений: 1518



« Ответ #14 : Июль 23, 2007, 03:56:50 »

Ох ее )))
Записан

Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил...
壯鎭
LazarusLong
Ирландский доброволец
Проректор
*****

Карма: +181/-7
Offline Offline

Пол: Мужской
Награды:
А может я тоже хочу себе награду?
Сообщений: 6134


Ukrainian by birth, Irish by the grace of God


WWW
« Ответ #15 : Июль 23, 2007, 04:06:43 »

Но даже после выправления синтаксиса не работает Подмигивающий, Вылаетает с ошибками  Смеющийся  Смеющийся  Смеющийся Да и вообще есть способ гораздо проще. Буквально в три строки Подмигивающий.
Записан

Когда ему нужно - он русский, когда нужно - украинец, а когда ему ни хрена не нужно - он ирландец.

"...Он любил говорить факин щит
Когда что-то не так ему
Принимал он свой самый ирландский вид
И кидался трубкой в жену..."
Sochin
Злой модератор
Декан
*****

Карма: +108/-6
Offline Offline

Пол: Мужской
Сообщений: 1518



« Ответ #16 : Июль 23, 2007, 04:07:37 »

Но даже после выправления синтаксиса не работает Подмигивающий, Вылаетает с ошибками  Смеющийся  Смеющийся  Смеющийся Да и вообще есть способ гораздо проще. Буквально в три строки Подмигивающий.
Ну клево что есть в три. Зато у меня мего-способ. )) И все там работает... ща буду ставить билдер. )))
Записан

Говорят, когда компьютер сгорает, перед взором микропроцессора за долю секунды проносятся все операции, которые он когда-либо совершил...
壯鎭
NunTerix
Декан
*****

Карма: +26/-1
Offline Offline

Пол: Мужской
Сообщений: 1688



« Ответ #17 : Июль 23, 2007, 06:38:19 »

Я не стал свой второй способ выкладывать ... может кто то ещё решит ... А вообще я удивлён такой малой популярностью этой викторины ... и даже задача не из мега сложных же (((
Записан

Сердце может прибавить ума, но ум не может прибавить сердца.
naxellar
Главный флудер
Проректор
*****

Карма: +101/-52
Offline Offline

Пол: Мужской
Сообщений: 5015

Главный флудер


« Ответ #18 : Июль 24, 2007, 01:48:18 »

ЗЫ: naxellar, насчет fabs - RTFM
Я догадусь, что это модуль, но почему f в начале?
Записан
NunTerix
Декан
*****

Карма: +26/-1
Offline Offline

Пол: Мужской
Сообщений: 1688



« Ответ #19 : Июль 24, 2007, 06:58:48 »

ЗЫ: naxellar, насчет fabs - RTFM
Я догадусь, что это модуль, но почему f в начале?

Загляни в какой нибудь справочник по С и скажи мне какая функция абсолютного значения?
Записан

Сердце может прибавить ума, но ум не может прибавить сердца.
Страниц: [1] 2 3  Все   Вверх
  Печать  
 
Перейти в:  

Penguins Counter Powered by MySQL Powered by PHP Powered by SMF 1.1.8 | SMF © 2006-2008, Simple Machines LLC Valid XHTML 1.0! Valid CSS! Internetmap
Страница сгенерирована за 0.184 секунд. Запросов: 32.