Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Народ подскажите как правильно?


Автор: Holy Max 9.10.2004, 18:43
Народ подскажите как правильно использовать функицию min в С++, а то что то я не могу никак вычленить минимальное число из двух данных по типу min(z,x) и полученно е присвоить переменной MN.
Помогите плиз...

Автор: prankster 9.10.2004, 19:14
???
во-первых, это вроде макрос. И потом, в чем проблема? Неужели MN = min(z, x) не проходит?

Автор: Guest 9.10.2004, 19:27
Compiling MAKS001.CPP:
Error MAKS001.CPP 15: Function 'min' should have a prototype
Warning MAKS001.CPP 17: 'mn' is assigned a value that is never used
вот че пишет мне а программа и задание такое.

Короче вот задача:
1. Даны действительные числа х, у, и z. Вычислить min2 (x + y + z / 2, xyz) +1.

А вот то что я накропал:

# include <iostream.h>
# include <conio.h>
# include <math.h>
# include <stdlib.h>
# include <stdio.h>
void main()
{ clrscr ();
float x,y,z,pr,pr1,mn;
cout <<"\n Dannaya programma vichislyaet formulu \n";
cout <<"\n Vvedite deistvitelnie chisla x, y, z \n";
cin >>x>>y>>z;
cout <<"\n"<<x<<"\n"<<y<<"\n"<<z<<"\n";
pr=(x+y+z)/2;pr1=x*y*z;
cout <<"\n"<<pr<<"\n"<<pr1<<"\n";
mn=min(pr,pr1);
getch();
}

Поправте если не сложно...

Автор: prankster 9.10.2004, 19:59
глюки скорее всего потому, что переменные вещественного типа. В библиотеке math есть функции для сравнения вещественных переменных (если мне не изменяет память). Кстати, сравнивать такие переменные с помощью обычного больше-меньше не рекомендуется - лучше ввести константу, до какой точности сравниваешь. Короче, смотри math.h

Автор: prankster 9.10.2004, 20:09
че-то я в этом math.h ничего не нашел smile.gif
Тогда можешь сам написать. Пример:
Код
#include <math.h>
#define EPS  1E-6
 bool fequal(float x, float y) {
 return fabs(x-y) < EPS;
}

Автор: Guest 9.10.2004, 20:36
Блин вот если бы ты еще и с пояснениями писал совсем было бы клево...
А то нифига не понял..

Автор: prankster 9.10.2004, 20:50
вводим константу EPS - до какого знака после запятой хотим сравнивать наши дробные числа (в примере - до шестого). Далее, чтобы, например, узнать равны ли наши числа с точностью до EPS знака после запятой, находим их разность, берем от нее модуль (функция fabs из модуля math.h) и уже эту разность сравниваем с нашей константой.
Пример:
числа 0,000000123 и 0,000000156 процедура будет считать равными. Понятно?

Автор: mr.DUDA 10.10.2004, 09:45
Сделай #include "minmax.h". smile.gif

З.Ы. или используй вот это:
Код
#ifndef max
#define max(a,b)            (((a) > (b)) ? (a) : (b))
#endif

#ifndef min
#define min(a,b)            (((a) < (b)) ? (a) : (b))
#endif

Автор: LuckLess 10.10.2004, 12:34
Да ну вы че? Можно гораздо проще , зачем вам условный оператор??
mn=(pr>pr1)?pr1:pr;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)