0 / 0 / 0
Регистрация: 09.10.2021
Сообщений: 84
1

Найти максимальное число из трех без условных операторов

10.10.2021, 17:50. Показов 3977. Ответов 13
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Нужно найти максимальное число из трех без условных операторов На примере этого кода только без УСЛОВНЫХ ОПЕРАТОРОВ


#include<iostream>
using namespace std;

int main()
{
setlocale(0, "");
int one = 0, two = 0, three = 0;
cout << "Введите первое число: ";
cin >> one;
cout << "Введите второе число: ";
cin >> two;
cout << "Введите третье число: ";
cin >> three;
if (one > two && one > three)
cout << 'F' << endl;
else
if (two > one && two > three)
cout << 'S' << endl;
else
if (three > one && three > two)
cout << 'T' << endl;
else
if (one == two && two == three)
cout << 'E' << endl;
else
cout << 'N' << endl;

system("pause");
return 0;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.10.2021, 17:50
Ответы с готовыми решениями:

Определить, является ли число четным или нечетным без циклов и условных операторов
Друг дал решить задачу, помогите, пожалуйста, решить ее, если это возможно=)) Определить...

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

Как можно сделать без условных операторов?
Проверить утверждения для введенной переменной Х. Программа должна вывести утверждения: 1...

Как реализовать задачу без условных операторов?
C клавиатуры вводится натуральное число n &gt; 0, потом n чисел, каждое на новой строке. Вычислите...

Метод с выбором одного из двух без условных операторов
Суть такова, на одном из собеседований была предложена задача: Есть метод с булевым параметром....

13
Заблокирован
10.10.2021, 18:48 2
Цитата Сообщение от waze Посмотреть сообщение
найти максимальное число из трех без условных операторов
это невозможно.
З.Ы. Тернарный оператор тоже является условным.
0
0 / 0 / 0
Регистрация: 09.10.2021
Сообщений: 84
10.10.2021, 18:58  [ТС] 3
А как это сделать с помощью тернарного оператора?
0
Заблокирован
10.10.2021, 19:04 4
Цитата Сообщение от waze Посмотреть сообщение
А как это сделать с помощью тернарного оператора?
Вот так:
C++
1
2
3
4
5
6
7
#define MAX2(a, b) (((a) > (b)) ? (a) : (b))
#define MIN2(a, b) (((a) < (b)) ? (a) : (b))
#define MAX3(a, b, c) MAX2((a), MAX2((b), (c))) // <---------------------------------------
#define MIN3(a, b, c) MIN2((a), MIN2((b), (c)))
#define MID3(a, b, c) MAX3(MIN2((a), (b)), MIN2((b), (c)), MIN2((a), (c))) 
#define MAX4(a, b, c, d) MAX2(MAX2(a, b), MAX2(c, d)) 
#define MIN4(a, b, c, d) MIN2(MIN2(a, b), MIN2(c, d))
0
0 / 0 / 0
Регистрация: 09.10.2021
Сообщений: 84
10.10.2021, 19:06  [ТС] 5
Дайте пожалуйста объяснения к коду пожалуйста.
0
Заблокирован
10.10.2021, 19:11 6
Цитата Сообщение от waze Посмотреть сообщение
Дайте пожалуйста объяснения к коду пожалуйста.

Макрос MAX3 вычисляет значение максимального из 3 элементов a, b и с с помощью тернарного оператора.
0
369 / 310 / 65
Регистрация: 14.10.2014
Сообщений: 1,318
10.10.2021, 19:33 7
Цитата Сообщение от Verevkin Посмотреть сообщение
это невозможно
Думаю, что возможно. Сочинял не сам, отрыл пару лет назад на просторах интернета. Думаю, что это из какой-то книги, вроде "150 тестовых заданий на собеседованиях"

waze,
держи, но это нахождение максимума из двух чисел, но если работает с двумя, то путём нехитрых операций можно и с тремя использовать. Наверное.... в общем - дальше сам как-нибудь, с божией помощью.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <climits>
 
/* Отражаем 1 в 0 и 0 в 1 */
int flip(int bit) {
    return 1^bit;
}
 
/* Возвращаем 1, если число положительное, и 0, если отрицательное*/
int sign(int a) {
    return flip((a >> (sizeof(int) * CHAR_BIT - 1)) & 0x1);
}
 
int getMax(int a, int b) {
    int c = a - b;
 
    int sa = sign(a); // если a >= 0, то 1, иначе 0
    int sb = sign(b); // если a >= 1, то 1, иначе 0
    int sc = sign(c); // зависит от переполнения a - b
 
    /* Цель: найти k, которое = 1, если а > b, и 0, если a < b.
     * если a = b, k не имеет значения */
 
    // Если у а и b равные знаки, то k = sign(a)
    int use_sign_of_a = sa ^ sb;
 
    // Если у a и b одинаковый знак, то k = sign(a - b)
    int use_sign_of_c = flip(sa ^ sb);
 
    int k = use_sign_of_a * sa + use_sign_of_c * sc;
    int q = flip(k); // отражение к
 
    return a * k + b * q;
}
 
int main() {
    std::cout << getMax(4, 5);
    return 0;
}
0
Just Do It!
3841 / 2288 / 636
Регистрация: 23.09.2014
Сообщений: 7,073
Записей в блоге: 2
10.10.2021, 19:42 8
Цитата Сообщение от waze Посмотреть сообщение
Найти максимальное число из трех без условных операторов
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
///----------------------------------------------------------------------------|
/// ...
///----------------------------------------------------------------------------:
#include <iostream>
 
int main()
{
    int a, b, c; std::cin >> a >> b >> c;
 
    {
        int mm[] = {a, b};
        int m [] = {mm[b > a], c};
 
        std::cout << (m[m[1] > m[0]]) << '\n';
    }
}
0
Заблокирован
10.10.2021, 20:01 9
XLAT,

А оператор ">" разве не является условным?
0
Just Do It!
3841 / 2288 / 636
Регистрация: 23.09.2014
Сообщений: 7,073
Записей в блоге: 2
10.10.2021, 21:54 10
Цитата Сообщение от Verevkin Посмотреть сообщение
А оператор ">" разве не является условным?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
///----------------------------------------------------------------------------|
/// ...
///----------------------------------------------------------------------------:
#include <iostream>
 
int main()
{
    const int N = sizeof(int)*8-1;
 
    int a, b, c; std::cin >> a >> b >> c;
 
    {
        int mm[]   = {a,  b};
        unsigned t =  a - b ;
        int m []   = {mm[(t>>=N)], c};
        std::cout << (m [(t = m[0] - m[1])>>=N]) << '\n';
    }
}
0
Заблокирован
10.10.2021, 22:02 11
XLAT, круто. Но это за гранью здравого смысла, конечно. Я имею в виду саму задачу.
0
Just Do It!
3841 / 2288 / 636
Регистрация: 23.09.2014
Сообщений: 7,073
Записей в блоге: 2
10.10.2021, 22:11 12
Цитата Сообщение от Verevkin Посмотреть сообщение
Но это за гранью здравого смысла
блин,
я всегда хотел знать, что находится за гранью здравого смысла,
ну, более менее детально, разумеется.)
я не про задачу....


Verevkin, если по задаче,
то что там на уровне триггеров схемотехники - там вроде всё вычисляется?
0
Заблокирован
10.10.2021, 22:16 13
Цитата Сообщение от XLAT Посмотреть сообщение
то что там на уровне триггеров схемотехники - там вроде всё вычисляется?
Тут больше похоже на аналоговую электронику.
1
Recrut_rf
11.10.2021, 08:49     Найти максимальное число из трех без условных операторов
  #14

Не по теме:


XLAT, я думал, моё решение (найденное на просторах сети много лет назад) - есть вершина безумства и просвещения, полнейший дзен между средствами языка и способами его использования. но десятый пост этой темы показал, как сильно я заблуждался. Это ж как нужно мучить свой разум, чтоб прийти к такому....

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.10.2021, 08:49

Линейный алгоритм, переписать программу без условных операторов
Можно ли как-то переписать данную программу без условных операторов? Что бы алгоритм был линейный?...

В массиве случайным образом записаны только числа 20 и 4; заменить 20 на 4, а 4 на 20 (без условных операторов)
Дан одномерный массив из n СЛУЧАЙНЫХ чисел. В массиве случайным образом записаны только числа 20 и...

Обнулить строки, у которых наименьший элемент больше 0.5 (без использования циклов и условных операторов)
Написать функцию на языке MATLAB, которая без использования циклов и условных операторов:...

Найти максимальное число из трёх
Помогите пожалуйста, очень нужно, заранее благодарю! Условный оператор. 12. Найти максимальное...

Найти максимальное число из трех
Помогите пожалуйста написать программу которая определяет максимальное по абсолютной величине из...

Найти максимальное число из трех
надо создать программу которое при вводе трех чисел,скажет какое из них наибольшее. мое: program...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru