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

max i min

17.10.2013, 14:51. Просмотров 1162. Ответов 20
Метки нет (Все метки)

как такое сделать?



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

Найти max и min, если min левее max, то среднее арифметическое между ними
#include <iostream.h> #include <stdio.h> #include <conio.h> #include...

Даны целые числа а, b, с. Вычислить в-сумму у = min (a, b + c) + max (ac, b)-min (a2, c)
Даны целые числа а, b, с. Вычислить в-сумму у = min (a, b + c) + max (ac,...

Найти min(max(x, y), max(x, z), max(z, d)
Даны различные действительные числа x, y, z, d. Найти min(max(x, y), max(x, z),...

Найти max {min (a, b), min (c, d)}.
Найти max {min (a, b), min (c, d)}.

max min
Всем доброго времени суток. нужна ваша помощь ув. программеры. Дана...

20
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
17.10.2013, 14:59 2
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
#include <iostream>
using namespace std;
 
double min(double &x,double &y)
{
if (x>y)
return y;
else
return x;
}
 
double max(double &x,double &y)
{
if (x>y)
return x;
else
return y;
}
 
int main()
{
double p,x,y,z;
cout<<"Please enter x,y,z\n";
cin>>x>>y>>z;
p=(min(x,y)-max(y,z))/2;
cout<<"p = "<<p<<endl;
cout<<"9 ne 4itau knig i ne xo4y"
"y4it's9, poetomy zada4i rewaut za men9";
return 0;
}
я модуль не заметил на картинке
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
17.10.2013, 15:18 3
dzrkot, а зачем изобретать min/max? Разберитесь, что есть в std, который Вы так резво используете. Не придется писать велосипеды.
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
17.10.2013, 15:22 4
Цитата Сообщение от Tulosba Посмотреть сообщение
dzrkot, а зачем изобретать min/max? Разберитесь, что есть в std, который Вы так резво используете. Не придется писать велосипеды.
надо бы, просто пишу под микроконтроллеры, поэтому такие вещи привык руками делать))
0
MrGluck
Модератор
Эксперт CЭксперт С++
8086 / 4939 / 1431
Регистрация: 29.11.2010
Сообщений: 13,395
17.10.2013, 15:32 5
Цитата Сообщение от dzrkot Посмотреть сообщение
if (x>y)
return y;
else
return x;
прочтите про тернарный оператор
C++
1
return x > y ? y : x;
с STL:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
#include <cmath>
 
double foo(const int x, const int y, const int z)
{
    return abs(std::min(x, y) - std::max(y, z)) / 2.0;
}
 
int main()
{
    int x, y, z;
    std::cin >> x >> y >> z;
    double p = foo(x, y, z);
    std::cout << p;
}
Tulosba, я думаю надо сначала бы самому написать нечто похожее, прежде чем использовать алгоритмы.
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
17.10.2013, 15:36 6
Цитата Сообщение от MrGluck Посмотреть сообщение
прочтите про тернарный оператор
C++
1
return x > y ? y : x;
я вообще-то в курсе что это) почему не использовал? забыл о нём вообще))
0
Katya99
1 / 1 / 0
Регистрация: 17.09.2013
Сообщений: 96
17.10.2013, 15:39  [ТС] 7
вот ,я разобралась,но почему выбивает
fatal error iostream no such file or directory

#include <iostream>
#include <conio.h>
#include <complex>
#include <math.h>



int main()
{
double x,y,z,a,b;
using namespace std;


cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
cout<<"z=";
cin>>z;

if(x>y)
a=y;

else
a=x;

if(y>z)
b=y;

else
b=z;

p=(abs (a-b))/2;

cout<<"p="<<p<<endl<<"Press any key to finish...";


getch();
return 0;
}
0
dzrkot
zzzZZZ...
523 / 354 / 94
Регистрация: 11.09.2013
Сообщений: 2,039
17.10.2013, 15:41 8
у вас visual studio ? тогда #include "stdfx" ещё надо в начале

2)р необъявлен
0
Katya99
1 / 1 / 0
Регистрация: 17.09.2013
Сообщений: 96
17.10.2013, 15:43  [ТС] 9
нет ,не visual
Я открыла другую ,и она работает с iostream.а именно эта -нет
0
MrGluck
Модератор
Эксперт CЭксперт С++
8086 / 4939 / 1431
Регистрация: 29.11.2010
Сообщений: 13,395
17.10.2013, 15:49 10
Цитата Сообщение от Katya99 Посмотреть сообщение
#include <iostream>
C++
1
#include <iostream.h>
Видимо вы на борланде сидите
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
17.10.2013, 15:49 11
Цитата Сообщение от MrGluck Посмотреть сообщение
return abs(std::min(x, y) - std::max(y, z)) / 2.0;
А почему не std::abs() ?
Цитата Сообщение от MrGluck Посмотреть сообщение
я думаю надо сначала бы самому написать нечто похожее, прежде чем использовать алгоритмы.
Это кстати регулярная дилемма. Обычно не всегда понятно, что знает (должен знать) ТС для решения поставленной задачи. Поэтому мне кажется имеет смысл сначала предложить решение с учетом стандартной библиотеки (тем более, что тут не какой-то сложный для понимания новичком алгоритм), а уж потом, если ТС скажет: "мы этого не проходили", предложить ему рукописный вариант. Или еще какой на дефайнах
0
MrGluck
Модератор
Эксперт CЭксперт С++
8086 / 4939 / 1431
Регистрация: 29.11.2010
Сообщений: 13,395
17.10.2013, 15:50 12
Цитата Сообщение от Katya99 Посмотреть сообщение
Я открыла другую ,и она работает с iostream.а именно эта -нет
Не обижайтесь, но вас трудно понять, попробуйте строить предложения более осмысленно.
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
17.10.2013, 15:52 13
Цитата Сообщение от dzrkot Посмотреть сообщение
просто пишу под микроконтроллеры, поэтому такие вещи привык руками делать))
Видимо не достаточно пишете. Иначе бы:
1. знали про тернарный оператор.
2. использовали бы скорее макросы MAX/MIN.
0
Katya99
1 / 1 / 0
Регистрация: 17.09.2013
Сообщений: 96
17.10.2013, 15:55  [ТС] 14
дело в том ,что я вставила в другую,где тоже иострим без h и там она работает.
0
MrGluck
Модератор
Эксперт CЭксперт С++
8086 / 4939 / 1431
Регистрация: 29.11.2010
Сообщений: 13,395
17.10.2013, 16:02 15
Цитата Сообщение от Tulosba Посмотреть сообщение
А почему не std::abs() ?
http://www.cplusplus.com/reference/complex/abs/
http://www.cplusplus.com/reference/cmath/abs/
Заметил интересную вещь, в описании cmath (и cstdlib) оно не из std. Хотя вроде бы, когда меняли с <*.h> на <c*> заключали функции в стандартное пространство имен.
Не знаю в чем профит std, если есть глобальная функция.

Кстати тут:
http://www.cplusplus.com/reference/cmath/abs/ она вроде как должна проходить по перегрузке double abs (T x), но тем не менее, вызывается int abs(int x), иначе бы при входных параметрах 2 2 3, если делить на 2 а не 2.0, выдавало бы 0.5 а не 0 (int/int)

Добавлено через 2 минуты
Цитата Сообщение от Tulosba Посмотреть сообщение
Или еще какой на дефайнах
макросы в С++ вы одобряете?)
0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
17.10.2013, 16:08 16
Не очень понял, что я должен был вынести по ссылкам.
Цитата Сообщение от MrGluck Посмотреть сообщение
Не знаю в чем профит std, если есть глобальная функция.
В глобальном пространстве сишная сидит, которая не может иметь перегрузок.
Цитата Сообщение от MrGluck Посмотреть сообщение
иначе бы при входных параметрах 2 2 3 выдавало бы 0.5 а не 0 (int/int)
Снова не понял

Добавлено через 2 минуты
Цитата Сообщение от MrGluck Посмотреть сообщение
макросы в С++ вы одобряете?)
Это был пример того, какое решение может принять препод у ТС. В здравом уме использовать макрос, если его можно заменить иной сущностью, не стоит.
0
MrGluck
Модератор
Эксперт CЭксперт С++
8086 / 4939 / 1431
Регистрация: 29.11.2010
Сообщений: 13,395
17.10.2013, 16:17 17
Tulosba, на том сайте для abs из complex дописали пространство имен, а для abs из cstdlib и cmath нет:
max i min


Для кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <algorithm>
#include <cmath>
 
double foo(const int x, const int y, const int z)
{
    return abs(std::min(x, y) - std::max(y, z)) / 2; // int / int
}
 
int main()
{
    int x, y, z;
    std::cin >> x >> y >> z;
    double p = foo(x, y, z);
    std::cout << p;
}
При входных параметрах 2 2 3 (x = 2, y = 2, z = 3) результата будет 0 заместо должных 0.5 Это говорит о том, что вызовется вариант int abs(int x). Та же проблема будет если дописать пространство имен для abs.
0
MrGluck
Модератор
Эксперт CЭксперт С++
8086 / 4939 / 1431
Регистрация: 29.11.2010
Сообщений: 13,395
17.10.2013, 16:19 18
Если сможете объяснить суть профита std::abs перед abs в данной задаче, то был бы благодарен. Я не использовал std::abs потому как эту выгоду просто не знаю.
0
dzrkot
17.10.2013, 16:24
  #19

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
Видимо не достаточно пишете. Иначе бы:
1. знали про тернарный оператор.
2. использовали бы скорее макросы MAX/MIN.
ой всё, я понял к чему вы клоните, я рукожоп, пойду убьюсь)))

0
Tulosba
:)
Эксперт С++
4749 / 3243 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
17.10.2013, 16:35 20
MrGluck, с интовыми аргументами проверять std::abs смысла конечно нет.
Предлагаю попробовать рассмотреть такой вариант:
C++
1
2
3
4
5
double foo(double x, double y, double z)
{
    return std::abs(std::min(x, y) - std::max(y, z)) / 2; // double / int
    return ::abs(std::min(x, y) - std::max(y, z)) / 2; // int / int
}
Добавлено через 9 минут

Не по теме:

Цитата Сообщение от dzrkot Посмотреть сообщение
ой всё, я понял к чему вы клоните, я рукожоп, пойду убьюсь)))
Лучше не стоит. А то мне доведение до суицида припишут :)

1
17.10.2013, 16:35
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.10.2013, 16:35

Max(x,y,z) min(x,y,z) на c++
max(x,y,z) min(x,y,z) на c++ Добавлено через 47 секунд пожалуйста помогите!

Max и Min в Си++
сформировать одномерный массив целых чисел используя ДСЧ. расспечатать...

min(x,y) max(x,y)
заданы действительные числа х, у. получить min(x,y) max(x,y)?


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

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

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