Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
studata
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 8
#1

Сравнить два введенных числа, не используя логические выражения - C++

17.10.2015, 22:58. Просмотров 368. Ответов 8
Метки нет (Все метки)

Здравствуйте ! Дали задачу, не знаю как сделать не используя условия, прошу помощи в решении:
Даны числа X и Y, если X в 2 раза больше Y – вывести 1, иначе – 0. Решить задачу с использованием логических выражений (конструкцию ветвления использовать нельзя).
Решил так, но с условием (
C++ (Qt)
1
2
3
4
5
6
7
8
    int x = 8, y = 2;
 
    if (y * 2 == x)
        cout << "1";
    else
        cout << "0";
    
    system("pause");
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.10.2015, 22:58
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сравнить два введенных числа, не используя логические выражения (C++):

Сравнить два числа, введенных пользователем - C++
Написать программу, которая сравнивает два введенных с клавиатуры числа. Программа должна указать, какое число больше, или, если числа...

Записать логические выражения, используя условные операторы, операции отношений и логические операции - C++
Записать логические выражения, используя условные операторы, операции отношений и логические операции алгоритмического языка ...

Сравнить два целых числа, не используя условного оператора, оператора выбора и так же символов сравнения - C++
Добрый день уважаемые программисты, хотелось, чтобы вы помогли мне в решении одной задачи, а именно подсказали идею решения. Задача...

Сравнить два числа, вывести большее - C++
Добрый день изучаю с++, дошел до оператора if. Задание такое - сравнить два числа и вывести большее из них. #include &lt;iostream&gt; using...

Длинная арифметика. Сравнить два числа - C++
Составить программу для сравнения двух n-значных чисел (n &gt; 20). Учитывать знак числа.

Написать программу, которая сравнивает два введенных с клавиатуры числа - C++
Помогите решить пожалуйста) Написать программу, которая сравнивает два введенных с клавиатуры числа. Программа должна указать, какое...

8
Barrent
244 / 120 / 41
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
17.10.2015, 23:14 #2
C++
1
cout << (int)(x == (2 * y)) << endl;
1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
17.10.2015, 23:45 #3
Barrent, приводить к инту не обязательно. Если, конечно, не установлен std::boolalpha
1
Barrent
244 / 120 / 41
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
17.10.2015, 23:55 #4
хм, кажись созрел вариант без логических операторов. С х=0 правда не очень выйдет
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include <iostream>
 
using namespace std;
int main()
{
    int x, y;
    cout << "x: ";
    cin >> x;
    cout << "y: ";
    cin >> y;
    int c1 = x % (2 * y) - x;       //если 2y>x, то равно 0, если x == 2y, то равно -x
    int c2 = (2 * y) % x - (2 * y); //если 2y<x, то равно 0, если x == 2y, то равно -x
    int c = (c1*c2) / (x*x);
    cout << c << endl;
    system("pause");
    return 0;
}
1
panotnap
30 / 30 / 4
Регистрация: 24.09.2014
Сообщений: 242
18.10.2015, 00:06 #5
ассемблер >> вычитание >> вывод флага
0
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
18.10.2015, 10:56 #6
Цитата Сообщение от Barrent Посмотреть сообщение
вариант без логических операторов
C++
1
cout << static_cast<bool>(~(x - 2*y)) << endl;
0
Barrent
244 / 120 / 41
Регистрация: 04.05.2013
Сообщений: 346
Завершенные тесты: 2
18.10.2015, 11:08 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Tulosba,
немного поправлю
C++
1
cout << static_cast<bool>(!(x - 2 * y)) << endl;
1
Tulosba
:)
Эксперт С++
4397 / 3233 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
18.10.2015, 19:48 #8
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Barrent Посмотреть сообщение
немного поправлю
С точки зрения результата получилось правильно, т.к. я ошибся c ~
Но я не использовал ! по причине того, что это всё таки логический оператор.
Без логических операторов предлагаю исправленный вариант:
C++
1
cout << (static_cast<bool>(x - 2 * y)^1) << endl;
1
studata
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 8
20.10.2015, 13:39  [ТС] #9
Спасибо ребята!
0
20.10.2015, 13:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2015, 13:39
Привет! Вот еще темы с ответами:

Сравнить два числа и вывести результат сравнения - C++
2.Написать функцию, которая сравнивает два числа и выводит результат сравнения.

Сравнить два int числа расположенных в char* строке - C++
Всем првиет. Имею проблему связанную с быстродействием. Нужно сравнить 2 строки на больше/меньше/равно. Каждый символ строки -...

Найти два наибольших числа из всех введенных, при условии что цифры не повторяются - C++
Вот сижу над очередной задачкой. Найти 2 наиболее высоких числа из 10 введенных, при условии что цифры не повторяются. Максимальное...

Программа которая выводит два наибольших числа из десяти введенных. Пожалуйста объясните суть работы программы - C++
#include &lt;iostream&gt; using namespace std; int main() { int i; float number, largest, largest2;


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru