Небольшая, но проблемка..
#include <math.h>
using namespace std;
double chislo1, chislo2, S_A, S_G;
double arith(double x, double y);
double geom(double x, double y);
int main()
{
cout<<"vvedite 2 chisla\n";
cout<<"vvedite chislo 1\n";
cin>>chislo1;
cout<<"vvedite chislo 2\n";
cin>>chislo2;
cout<<"Thenks a lot!\n";
S_A=arith(chislo1, chislo2);
s_g=geom(chislo1, chislo2);
cout<<"среднее арифметическое : \n";
cout<<S_A;
cout<<"\nсреднее геометрическое : ";
cout<<S_G;
cout<<"\nBilo priyatno s vami rabotat'!";
return 0;
}
double arith(double x, double y)
{
return x+y/2;
}
double geom(double x, double y)
{
return sqrt(abs(x)*abs(y));
}
Прога для нахождения среднего арифметического 2х чисел и среднего геометрического их модулей...
BuilderX говорит, что в предпоследней строке вот такая ошибка:
main.cpp": E2015 Ambiguity between 'std::abs(long)' and 'std::abs(int)' in function geom(double,double) at line 32 Чёйта фсё значит и как с этим бороться?!
#include <iostream>
#include <math.h>
using namespace std;
double chislo1, chislo2, S_A, S_G;
double arith(double x, double y);
double geom(double x, double y);
int main()
{
cout<<"vvedite 2 chisla\n";
cout<<"vvedite chislo 1\n";
cin>>chislo1;
cout<<"vvedite chislo 2\n";
cin>>chislo2;
cout<<"Thenks a lot!\n";
S_A=arith(chislo1, chislo2);
s_g=geom(chislo1, chislo2);
cout<<"среднее арифметическое : \n";
cout<<S_A;
cout<<"\nсреднее геометрическое : ";
cout<<S_G;
cout<<"\nBilo priyatno s vami rabotat'!";
return 0;
}
double arith(double x, double y)
{
return x+y/2;
}
double geom(double x, double y)
{
return sqrt(abs(x)*abs(y));
}
Прога для нахождения среднего арифметического 2х чисел и среднего геометрического их модулей...
BuilderX говорит, что в предпоследней строке вот такая ошибка:
main.cpp": E2015 Ambiguity between 'std::abs(long)' and 'std::abs(int)' in function geom(double,double) at line 32 Чёйта фсё значит и как с этим бороться?!
-------------------------------------
The DOUBLE keyword designates a 64-bit floating-point number.
Prototype
int abs(int x);
Description
Returns the absolute value of an INTEGER.
:)
Просто происходит неопределенность того какую ф-цию использовать, толи abs(long) толи abs(int)
поэтому желательно либо сделать прямоепреобразование либо сразу использовать тип int.
На самом деле неважно что он передает тип double
Просто происходит неопределенность того какую ф-цию использовать, толи abs(long) толи abs(int)
поэтому желательно либо сделать прямоепреобразование либо сразу использовать тип int.
Как видишь, не хотел долго писАть, думаю догадается. :)))))
double arith(double x, double y)
{
return x+y/2;
}
По-моему, ты еще ошибся в вычислении среднего арифметического. Где скобочки?
-------------------------------------
The DOUBLE keyword designates a 64-bit floating-point number.
Prototype
int abs(int x);
Description
Returns the absolute value of an INTEGER.
:)
Т.К. "х" и "у" у тебя double, то используй не abs(), a fabs()
Прога для нахождения среднего арифметического 2х чисел и среднего геометрического их модулей...
BuilderX говорит, что в предпоследней строке вот такая ошибка:
main.cpp": E2015 Ambiguity between 'std::abs(long)' and 'std::abs(int)' in function geom(double,double) at line 32 Чёйта фсё значит и как с этим бороться?!
Компилятор сообщает что, он не знает - какую функцию использовать для временного значения, которое получилось в результате неявного преведения. Для того что бы этого избежать необходимо как правильно тебе посоветовали использовать fabs - или явно привести double к int.
З.Ы. Не стесняйся использовать форматирование в своих сообщениях - так ты не будешь нарушать правила форума.
2sp999 : Пасиба, в жизни бы не нашёл))
Тут у мну ещё одна проблеммка возникла: как число 'e' в степени (x+y) записать? А то после Basic'a нишиша не получается...
Спасибо за помощ, с этим вроде разобрался.. Про форматирование сообщений - прошу прощения, не успел прочитать правила, каюсь.. :(
2sp999 : Пасиба, в жизни бы не нашёл))
Тут у мну ещё одна проблеммка возникла: как число 'e' в степени (x+y) записать? А то после Basic'a нишиша не получается...
Если e - это то самое 2,718..., то Exp(x+y)
А вообще, a^b = Exp(b * Ln(a))
Спасибо за помощ, с этим вроде разобрался.. Про форматирование сообщений - прошу прощения, не успел прочитать правила, каюсь.. :(
2sp999 : Пасиба, в жизни бы не нашёл))
Тут у мну ещё одна проблеммка возникла: как число 'e' в степени (x+y) записать? А то после Basic'a нишиша не получается...
По моему:
pow(e,x+y)
{
double r01, r02, r03;
r01=(x-y);
r02=pow(y,4);
r03=pow(exp,r01);
return x+(r02)*(r03);
}
В ответ на попытку скампилилить фсё это получаю:
"main.cpp": E2034 Cannot convert 'double (*)(double)' to 'double' in function fr2(double,double) at line 48 и
"main.cpp": E2342 Type mismatch in parameter '__x' (wanted 'double', got 'double (*)(double)') in function fr2(double,double) at line 48
Почему мне так не везёт?
З.Ы.:камент - часть примера, записаная в данной функции.
Пасиб!, и ещё один вопрос: Вот такая вот функция:
{
double r01, r02, r03;
r01=(x-y);
r02=pow(y,4);
r03=pow(exp,r01);
return x+(r02)*(r03);
}
Хм. Ну для начала - в функцию нужно передавать ссылку - и возвращать так значение тоже не стоит.
Во вторых - в сообщении ясно говорится что тебе необходимо проверить - как ты передаешь параметры.
Пасиб!, и ещё один вопрос: Вот такая вот функция:
{
double r01, r02, r03;
r01=(x-y);
r02=pow(y,4);
r03=pow(exp,r01);
return x+(r02)*(r03);
}
В ответ на попытку скампилилить фсё это получаю:
"main.cpp": E2034 Cannot convert 'double (*)(double)' to 'double' in function fr2(double,double) at line 48 и
"main.cpp": E2342 Type mismatch in parameter '__x' (wanted 'double', got 'double (*)(double)') in function fr2(double,double) at line 48
Почему мне так не везёт?
З.Ы.:камент - часть примера, записаная в данной функции.
r03=pow(exp,r01); - ???
пиши так:
exp() - это функция. e в степени