Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Emmyson
0 / 0 / 1
Регистрация: 11.10.2015
Сообщений: 36
1

Нахождение суммы двух наибольших из трех различных чисел

03.03.2016, 14:12. Просмотров 314. Ответов 5
Метки нет (Все метки)

Как это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2016, 14:12
Ответы с готовыми решениями:

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

Нахождение среднего арифметического трех целых чисел или суммы двух вещественных
#include <iostream> #include <cmath> int main() { float x,y; ...

Сумма двух наибольших из трех заданных чисел
Даны три числа. Требуется найти сумму двух наибольших из них. Формат входных...

Дано не менее трех различных натуральных чисел, за которыми следует ноль. Определить три наибольших числа из них
Дано не менее трех различных натуральных чисел, за которыми следует ноль....

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

5
John Prick
837 / 768 / 258
Регистрация: 27.07.2012
Сообщений: 2,180
Завершенные тесты: 3
03.03.2016, 14:30 2
Цитата Сообщение от Emmyson Посмотреть сообщение
Как это сделать?
Составить программу или найти сумму двух наибольших из трёх?

C++
1
2
3
4
5
6
7
8
9
10
#include <algorithm>
#include <iostream>
 
int main()
{
    int a = 5, b = 25, c = 15;
    std::cout << a + b + c - std::min(a, std::min(b, c));
    std::cin.get();
    return 0;
}
0
vvm28
Учусь всегда.
439 / 55 / 25
Регистрация: 22.12.2013
Сообщений: 405
Записей в блоге: 11
Завершенные тесты: 1
03.03.2016, 19:38 3
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
 
using namespace std;
 
inline int maxB(int x, int y)
{
return ( x ^ ((x ^ y) & -(x < y)) );
}
 
int main()
{
    int a = 5, b = 25, c = 15;
 
 
 
  cout<< maxB(a, b) +  maxB(a, c) <<endl;
 
    return 0;
}
Добавлено через 8 минут
можете оптимизировать формулу (x ^ ((x ^ y) & -(x < y)) + (x ^ ((x ^ y) & -(x < y)),
и тогда выполнение получится еще быстрее.
0
GbaLog-
Любитель чаепитий
3167 / 1473 / 465
Регистрация: 24.08.2014
Сообщений: 5,207
Записей в блоге: 1
Завершенные тесты: 2
03.03.2016, 19:44 4
vvm28, А что, если a = 3, b = 2, c =1?

Добавлено через 1 минуту
Цитата Сообщение от vvm28 Посмотреть сообщение
можете оптимизировать формулу (x ^ ((x ^ y) & -(x < y)) + (x ^ ((x ^ y) & -(x < y))
А можно ещё так:
return x > y ? x : y;
0
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
4803 / 2454 / 687
Регистрация: 18.10.2014
Сообщений: 4,231
03.03.2016, 19:55 5
Цитата Сообщение от vvm28 Посмотреть сообщение
C++
1
  cout<< maxB(a, b) +  maxB(a, c) <<endl;
Сначала, я думаю, надо было найти правильное решение, а уж потом заниматься оптимизациями. Ваше решение - неправильное, поэтому вопросы "быстрее" или "не быстрее" тут пока никакого значения не имеют.

(Это не говоря еще о том, что обычный максимум через сравнение будет быстрее этих странных извращений с побитовымт операциями.)
0
vvm28
Учусь всегда.
439 / 55 / 25
Регистрация: 22.12.2013
Сообщений: 405
Записей в блоге: 11
Завершенные тесты: 1
04.03.2016, 13:24 6
Цитата Сообщение от makfak Посмотреть сообщение
А что, если a = 3, b = 2, c =1?
В моей программе выведет результат = 6. // да вы правы мой алгоритм maxB(a, b) + maxB(a, c) не правильный.
А я уже обрадовался, что гениальный алгоритм придумал.

Добавлено через 2 часа 47 минут
Другой вариант:
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
#include <iostream>
 
#define SWAPI(a, b) (((a) == (b)) || (((a) ^= (b)), ((b) ^= (a)), ((a) ^= (b))))
 
using namespace std;
 
/*
inline int maxB(int x, int y)
    {
        return ( x ^ ((x ^ y) & -(x < y)) );
    }
*/
 
int main()
{
    //int a = 3, b = 2, c = 1;
 
int a = 2, b = 3, c = 1;
 
 
if(a<b) SWAPI(a, b);
    if(b<c)SWAPI(b, c);
 
 cout<< a+b <<endl;
 
 
    return 0;
}
0
04.03.2016, 13:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.03.2016, 13:24

Составьте алгоритм и программу нахождения произведения двух наибольших из трех введенных чисел
Составьте алгоритм и программу нахождения произведения двух наибольших из трех...

Нахождение суммы большего и меньшего из трех чисел
написать программу нахждения суммы большего и меньшего из трех чисел.

Нахождение суммы большего и меньшего из трех чисел
Тут проблемы с задачей: написать программу для нахождения суммы большего и...


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

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

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