Nadein
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 3
|
|
#1 | |
Сравнить два целых числа, не используя условного оператора, оператора выбора и так же символов сравнения - C++25.09.2013, 17:56. Просмотров 2896. Ответов 4
Метки нет Все метки)
(
Добрый день уважаемые программисты, хотелось, чтобы вы помогли мне в решении одной задачи, а именно подсказали идею решения. Задача заключается в следующем: нужно сравнить два целых числа, не используя условного оператора, оператора выбора и так же символов сравнения, а именно: >,<,>=,=<,=.
p.s.: задачу мне задал аспирант на экзамене по программированию. Идею сравнить числа с помощью сортировок массивов не продлагать, ибо в каждом методе сортировки есть знак сравнения.
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
25.09.2013, 17:56 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сравнить два целых числа, не используя условного оператора, оператора выбора и так же символов сравнения (C++):
4
Придумайте простую программу с использованием условного оператора IF и оператора switch - C++ Сочетания оператора цикла и условного оператора - C++ сочетания оператора цикла и условного оператора - C++ Сравнить два целых числа и вывести результат сравнения в виде одного из знаков: >, < или = - C++ Что делаю не так? Составить программу вычисления с применением условного оператора - C++ Выполнить задания с использованием инструкции выбора if и с использованием условного оператора - C++ |
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
|
|
25.09.2013, 18:03 | #2 |
Идея на уровне диванного теоретика: вычесть одно число из другого, а потом смотреть на старший бит, который отвечает за знак. Если он единичка, то число отрицательное и первое число было меньше второго.
Хотя, я щас подумал, там все равно if будет использоваться, при проверке бита знака.
0
|
Nadein
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 3
|
|
25.09.2013, 18:23 [ТС] | #3 |
я где-то в книжке читал, что в С++ любое целое число восприниматься как истина. И что если взять и разделить одно число на другое и записать его в интовую переменную а затем в булённувую переменную(b) , а затем запустить цикл while(b) и цикл while(!b) один из нит точно сработает и выведет сообщение при это, правда, произойдёт зацикливание. Но тут возникает проблема как компилятор округлит переменную?
или просто число воспринимает как истина, я чет подзабыл
0
|
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
|
||||||
25.09.2013, 18:33 | #4 | |||||
Только проблема в том, что это решение для положительного целого x и натурального y. А в условии говорится про целые. В том числе и отрицательные и ноль.
0
|
Nadein
0 / 0 / 0
Регистрация: 02.12.2012
Сообщений: 3
|
||||||
25.09.2013, 19:35 [ТС] | #5 | |||||
по-мойму любое число, даже если оно отрицательное, но целое воспринимается как истина. А вот проблема с нулём остаеться не разрешённой. ( надо у аспиранта переспросить)
Добавлено через 3 минуты Меня вот еще вопрос по поводу округления волнует. Вот допустим мы поделили x на y и получили 1,7. Как компилятор его округлит до 2 или до 1? Добавлено через 14 минут всё сделал за исключением только 0.
не не правильно, эт только для натуральных чисел Добавлено через 2 минуты а как на этот старший бит можно посмотреть?
0
|
25.09.2013, 19:35 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
25.09.2013, 19:35 |
Привет! Вот еще темы с ответами:
5
Сравнить два числа и вывести результат сравнения - C++ Краткая запись условного оператора) - C++
Грамматика условного оператора присваивания - C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |