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

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

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

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

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

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

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

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

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

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

5
John Prick
831 / 764 / 256
Регистрация: 27.07.2012
Сообщений: 2,176
Завершенные тесты: 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
Учусь всегда.
420 / 33 / 22
Регистрация: 22.12.2013
Сообщений: 352
Записей в блоге: 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-
Любитель чаепитий
3156 / 1462 / 462
Регистрация: 24.08.2014
Сообщений: 5,180
Записей в блоге: 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Эксперт С++
4372 / 2347 / 654
Регистрация: 18.10.2014
Сообщений: 3,996
03.03.2016, 19:55 #5
Цитата Сообщение от vvm28 Посмотреть сообщение
C++
1
  cout<< maxB(a, b) +  maxB(a, c) <<endl;
Сначала, я думаю, надо было найти правильное решение, а уж потом заниматься оптимизациями. Ваше решение - неправильное, поэтому вопросы "быстрее" или "не быстрее" тут пока никакого значения не имеют.

(Это не говоря еще о том, что обычный максимум через сравнение будет быстрее этих странных извращений с побитовымт операциями.)
0
vvm28
Учусь всегда.
420 / 33 / 22
Регистрация: 22.12.2013
Сообщений: 352
Записей в блоге: 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