Форум программистов, компьютерный форум CyberForum.ru

Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Илюза19
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 41
21.05.2013, 12:18     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #1
Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ) / ( 1+max(a+bc,b,15)) на С++.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.05.2013, 12:18     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ...
Посмотрите здесь:

Даны натуральное число n, действительные числа a1,...,an. Получить: max (-a1,a2,-a3,...,(-1)nan) C++
C++ Даны натуральные числа k,n действительные числа a1,...,akn. Получить: max(a1+...+ak,ak+1+...+a2k,ak(n-1)+1+...+akn);
C++ Даны натуральное число n, действительные числа A1.An. Получить: min(A2,A4,.)+max(A1,A3,.)
C++ Даны x, y, z. Вычислить a, b, используя приведенные ниже формулы. Получить max(a, b)
C++ Даны натуральное число n, действительные числа A1,A2,...,An.Получить:min(A1 , A3 , ...) + max(A2 , A4 , ...)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 928
Завершенные тесты: 1
21.05.2013, 12:52     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <algorithm>
 
template <typename T>
max(const T& one, const T& two, const T& three)
{
     return std::max(std::max(one, two), three);
}
 
int main()
{
    int a, b, c;
    std::cin >> a >> b >> c;
    
    int ret = (std::max(a, a + b) + std::max(a, b + c)) / (1 + max(a + b * c,  b, 15));
 
    std::cout << ret;
 
    return 0;
}
Илюза19
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 41
21.05.2013, 12:57  [ТС]     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #3
Спаибо) но вот здесь max(const T& one, const T& two, const T& three) выдает ошибку
yleart
 Аватар для yleart
60 / 45 / 1
Регистрация: 07.10.2011
Сообщений: 139
21.05.2013, 13:00     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #4
C++
1
T& max(const T& one, const T& two, const T& three)
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 928
Завершенные тесты: 1
21.05.2013, 13:02     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #5
Писал на лету. Вот проверенная.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <algorithm>
 
template <typename T>
T max(const T& one, const T& two, const T& three)
{
     return std::max(std::max(one, two), three);
}
 
int main()
{
    int a, b, c;
    std::cin >> a >> b >> c;
    
    int ret = (std::max(a, a + b) + std::max(a, b + c)) / (1 + max<int>(a + b * c,  b, 15));
 
    std::cout << ret << std::endl;
    std::cin.get();
 
    return 0;
}
Добавлено через 1 минуту
yleart, Вы возвращаете ссылку на локальную переменную. Будьте внимательней), впрочем как и я)
Илюза19
0 / 0 / 0
Регистрация: 21.05.2013
Сообщений: 41
21.05.2013, 13:05  [ТС]     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #6
Спасибо вам большое выручили=)
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
21.05.2013, 13:07     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #7
Цитата Сообщение от stima Посмотреть сообщение
возвращаете ссылку на локальную переменную
Тут нет вроде локальных переменных, ссылки же в аргументах. Только возвращать надо константную.
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 928
Завершенные тесты: 1
21.05.2013, 16:07     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #8
2gray_fox, Как это нет?) Будьте внимательней

C++
1
2
3
4
5
6
7
8
9
T bar()
{
return T();
}
 
T& foo()
{
    return bar();
}
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
21.05.2013, 16:14     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #9
stima, где здесь
C++
1
2
3
4
5
template <typename T>
T max(const T& one, const T& two, const T& three)
{
     return std::max(std::max(one, two), three);
}
создание локальных переменных? Я не вижу )

Добавлено через 3 минуты
ну т.е. если так написать
C++
1
2
3
4
5
template <typename T>
T const& max(const T& one, const T& two, const T& three)
{
     return std::max(std::max(one, two), three);
}
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 928
Завершенные тесты: 1
21.05.2013, 16:36     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #10
Во первых обратите внимание yleart написал возврат T&, а не T.
Во вторых, если не будет задействован RVO, std::max вернет обьект, время жизни которого функция max. Для лучшего понимания
C++
1
2
3
4
5
6
template <typename T>
T& max(const T& one, const T& two, const T& three) //обратите внимание на ссылку
{
     T ret = std::max(std::max(one, two), three);
     return ret;
}
п.с. T const& (тоже что и const T&) говорит лишь о константности, а не времени жизни.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
21.05.2013, 16:55     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #11
Цитата Сообщение от stima Посмотреть сообщение
Во первых обратите внимание yleart написал возврат T&, а не T.
Поэтому я и написал
Цитата Сообщение от gray_fox Посмотреть сообщение
Только возвращать надо константную.
Цитата Сообщение от stima Посмотреть сообщение
Для лучшего понимания
Хорошо, здесь
Цитата Сообщение от stima Посмотреть сообщение
C++
1
2
T ret = std::max(std::max(one, two), three);
return ret;
создаётся локальная переменная ret, я и не спорю, что возвращать ссылку на локальную переменную некорректно; но где же здесь
C++
1
return std::max(std::max(one, two), three);
создание локальной переменной\временного объекта?
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 928
Завершенные тесты: 1
21.05.2013, 18:23     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #12
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
#include <iostream>
 
struct A
{
    A()
    {
    std::cout << "construct was called" << std::endl;
    }
    
    A(const A& other)
    {
    std::cout << "copy construct was called" << std::endl;
    }
 
    A& operator=(const A& other)
    {
    std::cout << "assigment operator was called" << std::endl;
    }
};
 
A foo()
{
    return A();
}
 
A bar()
{
    return foo();
}
 
int main()
{
    bar();
    std::cin.get();
        
    return 0;
}
g++ -fno-elide-constructors main.cpp -o a.out && ./a.out.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
21.05.2013, 18:51     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #13
stima, круто конечно) но вы меня не поняли, видимо, я про это такое:
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 <algorithm> 
 
struct A
{
    A(int value) : value(value)
    {
       std::cout << "construct was called" << std::endl;
    }
    
    A(const A& other) : value(other.value)
    {
       std::cout << "copy construct was called" << std::endl;
    }
 
    A& operator=(const A& other)
    {
       value = other.value;
       std::cout << "assigment operator was called" << std::endl;
       return *this;
    }
 
    int value;
};
 
bool operator <(A const& lhs, A const& rhs) {
   return lhs.value < rhs.value;
}
 
template<typename T>
T const& max(T const& first, T const& second, T const& third) {
   return std::max(std::max(first, second), third);
}
 
int main() {
   A a(1), b(3), c(7);
   A const& result = max(a, b, c);
   std::cout << result.value << std::endl;
}
Здесь же не будет копирования, какие проблемы вернуть ссылку?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.05.2013, 19:17     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ...
Еще ссылки по теме:

Определить значение Z=max(a,2b)*max(2a-b,b), где max(x,y)-максимальное из чисел x,y C++
Даны натуральное n, действительные А1, А2, ... An. Получить: min(A1,A3,...)+max(A2,A4,...) C++
C++ Задача для курсовой: определить значение z=max(a, 2b)*max(2a-b,b), где max(x, y)-максимальные из чисел х и у

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

Или воспользуйтесь поиском по форуму:
stima
430 / 285 / 16
Регистрация: 22.03.2011
Сообщений: 928
Завершенные тесты: 1
21.05.2013, 19:17     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ... #14
Виноват ... std::max() возвращает ссылку на один из аргументом. Я думал там копия.^^
Yandex
Объявления
21.05.2013, 19:17     Даны действительные числа a,b,c. Получить: max(a,a+b) + max (a,b+c) ...
Ответ Создать тему
Опции темы

Текущее время: 00:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru