Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Небольшая, но проблемка..

9.1K
06 февраля 2006 года
pilot.off
25 / / 06.02.2006
#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 Чёйта фсё значит и как с этим бороться?!
9.4K
06 февраля 2006 года
alexmankom
12 / / 07.09.2005
Цитата:
Originally posted by pilot.off
#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.

:)

299
06 февраля 2006 года
3D Bob
885 / / 18.04.2005
На самом деле неважно что он передает тип double
Просто происходит неопределенность того какую ф-цию использовать, толи abs(long) толи abs(int)
поэтому желательно либо сделать прямоепреобразование либо сразу использовать тип int.
9.4K
06 февраля 2006 года
alexmankom
12 / / 07.09.2005
Цитата:
Originally posted by 3D Bob
На самом деле неважно что он передает тип double
Просто происходит неопределенность того какую ф-цию использовать, толи abs(long) толи abs(int)
поэтому желательно либо сделать прямоепреобразование либо сразу использовать тип int.



Как видишь, не хотел долго писАть, думаю догадается. :)))))

929
07 февраля 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by pilot.off

double arith(double x, double y)
{
return x+y/2;
}


По-моему, ты еще ошибся в вычислении среднего арифметического. Где скобочки?

324
07 февраля 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by alexmankom
-------------------------------------

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()

1
08 февраля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by pilot.off

Прога для нахождения среднего арифметического 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.
З.Ы. Не стесняйся использовать форматирование в своих сообщениях - так ты не будешь нарушать правила форума.

9.1K
08 февраля 2006 года
pilot.off
25 / / 06.02.2006
Спасибо за помощ, с этим вроде разобрался.. Про форматирование сообщений - прошу прощения, не успел прочитать правила, каюсь.. :(
2sp999 : Пасиба, в жизни бы не нашёл))
Тут у мну ещё одна проблеммка возникла: как число 'e' в степени (x+y) записать? А то после Basic'a нишиша не получается...
929
08 февраля 2006 года
sp999
198 / / 31.01.2003
Цитата:
Originally posted by pilot.off
Спасибо за помощ, с этим вроде разобрался.. Про форматирование сообщений - прошу прощения, не успел прочитать правила, каюсь.. :(
2sp999 : Пасиба, в жизни бы не нашёл))
Тут у мну ещё одна проблеммка возникла: как число 'e' в степени (x+y) записать? А то после Basic'a нишиша не получается...



Если e - это то самое 2,718..., то Exp(x+y)

А вообще, a^b = Exp(b * Ln(a))

9.4K
08 февраля 2006 года
alexmankom
12 / / 07.09.2005
Цитата:
Originally posted by pilot.off
Спасибо за помощ, с этим вроде разобрался.. Про форматирование сообщений - прошу прощения, не успел прочитать правила, каюсь.. :(
2sp999 : Пасиба, в жизни бы не нашёл))
Тут у мну ещё одна проблеммка возникла: как число 'e' в степени (x+y) записать? А то после Basic'a нишиша не получается...



По моему:

pow(e,x+y)

9.1K
08 февраля 2006 года
pilot.off
25 / / 06.02.2006
Пасиб!, и ещё один вопрос: Вот такая вот функция:
 
Код:
double fr2(double x, double y) //(x+y^4*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

Почему мне так не везёт?
З.Ы.:камент - часть примера, записаная в данной функции.
1
08 февраля 2006 года
kot_
7.3K / / 20.01.2000
Цитата:
Originally posted by pilot.off
Пасиб!, и ещё один вопрос: Вот такая вот функция:
 
Код:
double fr2(double x, double y) //(x+y^4*e^(x-y))
{
    double r01, r02, r03;
    r01=(x-y);
    r02=pow(y,4);
    r03=pow(exp,r01);
    return x+(r02)*(r03);
}


Хм. Ну для начала - в функцию нужно передавать ссылку - и возвращать так значение тоже не стоит.
Во вторых - в сообщении ясно говорится что тебе необходимо проверить - как ты передаешь параметры.

324
09 февраля 2006 года
AndreySar
532 / / 01.08.2004
Цитата:
Originally posted by pilot.off
Пасиб!, и ещё один вопрос: Вот такая вот функция:
 
Код:
double fr2(double x, double y) //(x+y^4*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

Почему мне так не везёт?
З.Ы.:камент - часть примера, записаная в данной функции.



r03=pow(exp,r01); - ???

пиши так:

 
Код:
r03 = exp(r01);


exp() - это функция. e в степени
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог