Другое Задачка по математике

AnWu

Известный
Автор темы
Всефорумный модератор
4,777
5,402
не знаю, вроде как работает эта штука:
Код:
#include <iostream>
#include <windows.h>
using namespace std;
int main(int argc, const char* argv[]) {
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int num, num1;
    cout << "Введите первое число ";
    cin >> num;
    cout << "Введите второе число ";
    cin >> num1;
    num > num1 ? cout << "Больше число " << num : cout << "Больше число " << num1;
}
тернарный оператор = логический
 

Vintik

Через тернии к звёздам
Проверенный
1,556
1,027
Нельзя использовать: if, else, &&, ||, битовые операции
Инструменты: iostream, cmath, математика, геометрия
Цель: вывести наибольшее из чисел
Ну конечно хочется
C++:
a > b ? a : b
Или хотя бы
C++:
int x;
if (a > b)
    x = a;
else
    x = b;
Скрытое содержимое для пользователя(ей): AnWu
Еще проскользнул такой вариант...
C++:
int n[2] = { a, b };
// если b > a, то 1, если b < a, то -1: (b - a) / abs(b - a)
n[(1 + (b - a) / abs(b - a)) / 2]
Во-первых, массивы, а во-вторых не работает при a = b. Уверен, что второе "но" устранимо, но нет смысла думать, т.к. массивы...
 

AnWu

Известный
Автор темы
Всефорумный модератор
4,777
5,402
Ну конечно хочется
C++:
a > b ? a : b
Или хотя бы
C++:
int x;
if (a > b)
    x = a;
else
    x = b;
*** Скрытый текст не может быть процитирован. ***
Еще проскользнул такой вариант...
C++:
int n[2] = { a, b };
// если b > a, то 1, если b < a, то -1: (b - a) / abs(b - a)
n[(1 + (b - a) / abs(b - a)) / 2]
Во-первых, массивы, а во-вторых не работает при a = b. Уверен, что второе "но" устранимо, но нет смысла думать, т.к. массивы...
Решение валяется дет в теме, я уже не помню)
 
  • Клоун
Реакции: Fott

Vintik

Через тернии к звёздам
Проверенный
1,556
1,027
Решение валяется дет в теме, я уже не помню)
Нашёл.
Моё же)
Но мне понравилось твоё.
Помнится, была как-то задачка менять bool (0 -> 1, 1 -> 0).

Я как накрутил, что-то типа:
C++:
bool b;

-1 * (- 1 + b)
Потом долго сокращал, а в конце понял, что это решается в общем случае (a -> b, b -> a):
1709839865964.png
Уравнение прямой y = kx + p.
b = k * a + p
a = k * b + p
=> вычитаем 1 из 2
a - b = k * (b - a)
k = -1
=> подставляем k = -1
b = -a + p
p = a + b
И так, например, функция перевода 5 -> 8, 8 -> 5 будет иметь вид:
z = 5 + 8 - z
 
  • Нравится
Реакции: AnWu