Реализовать Условие Без Условных Операторов

Тема в разделе "Pascal and Delphi", создана пользователем dimon131, 12 апр 2013.

  1. dimon131

    dimon131 Member

    Регистрация:
    8 дек 2010
    Сообщения:
    13
    Симпатии:
    0
    Здравствуйте. Подскажите, пожалуйста, алгоритм, как можно реализовать эту задачу без использования операторов ветвления (if) и циклов



    Задано натуральное число N. Напишите программу, которая определяет следующее четное число. При решении данной задачи не допускается использовать операторы ветвления (if) и циклов.

    Входные данные:
    число N

    выходные данные:
    следующее четное число.
     
  2. Senset

    Senset Well-Known Member

    Регистрация:
    11 сен 2006
    Сообщения:
    136
    Симпатии:
    0
    read(n);
    write(n+2-(n mod 2));
     
  3. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Хм... Ваш вариант конечно работает, вопросов нет...
    Только вот я думаю что задачка то "с подковыркой"... на знание побитовых операций. :)
    Четным является число у которого нулевой бит установлен в 0.
    Поэтому думаю ответом "на пятерку" будет:
    Код (Delphi):
    ReadLn(n);
    WriteLn(n or 1 + 1);
    n or 1 - поднимает 0-й бит. Если он уже установлен, то таким и останется.
    Тем самым получаем НЕчетное число следующее за N (либо само N если оно нечетное).
    Затем просто инкрементируем полученное число на 1.
     
Загрузка...

Поделиться этой страницей