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

работа с функциями.что-то не так. - C++

Восстановить пароль Регистрация
 
Sveta1992
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 10
11.02.2012, 17:11     работа с функциями.что-то не так. #1
выдает ошибку: неоднозначный вызов перегруженной функции. в чем дело?


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
#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <math.h>
 
using namespace std;
 
double tang (double);//радианы
int tang (int);//градусы
 
void main()
{
    setlocale(LC_ALL, "russian");
    for (int i=0;i<3;i++)
    {
    cout<<"введите аргумет"<<endl;
    double c;
    cin>>c;
    
    double x=tang(c);
        cout<<"тангенс аргумента"<<x<<endl;
    }
    _getch();
}
    
double tang (double k)
{
 double b = tan (k);
 return b;
}
 
int tang (int k)
{
 int b = tan (k);
 return b;
}
 Комментарий модератора 
Используйте теги форматирования кода!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.02.2012, 17:11     работа с функциями.что-то не так.
Посмотрите здесь:

C++ Работа с указателями: подскажите что я не так делаю
C++ Работа с функциями
работа с функциями в С++ !! C++
работа с функциями C++
Работа с Timerom ,что не так не работает C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
11.02.2012, 17:18     работа с функциями.что-то не так. #2
C++
1
2
3
4
5
int tang (int k)
{
    int b = tan(double(k));
    return b;
}
Sveta1992
0 / 0 / 0
Регистрация: 27.11.2011
Сообщений: 10
11.02.2012, 17:33  [ТС]     работа с функциями.что-то не так. #3
а почему так нужно было сделать? объясните пожалуйста.
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
11.02.2012, 17:45     работа с функциями.что-то не так. #4
в с++ для ф-ии tan есть 3 варианта перегрузки: для типов double, long double, и float. компилятору безразлично в какой из этих 3х типов ему перевести тип int. отсюда неоднозначность вызова ф-ии. записью tan(double(k)) мы конкретно указываем, какую из перегрузок использовать
-=ЮрА=-
Заблокирован
Автор FAQ
12.02.2012, 04:01     работа с функциями.что-то не так. #5

Не по теме:

Sveta1992, здесь

Цитата Сообщение от retmas Посмотреть сообщение
int b = tan(double(k));
- можно было преобразовывать и неявным способом вот так int b = tan(1.0*k);



Добавлено через 7 минут
PS:
Цитата Сообщение от Sveta1992 Посмотреть сообщение
int tang (int);//градусы
- вам вдобавок ещё и неверно подсказали, чтобы данная функция воспринимала параметр в градусах и выдавала корректный ответ, я бы рекомендовал и даже буду настаивать чтобы вы сделали тело int tang (int) таким
C++
1
2
3
4
5
6
int tang (int k)
{
    double pi_2 = asin(1.0);
    int b = tan(pi_2*k/90.0);
    return b;
}
PS: retmas, ты забыл что tan принимает значение в радианах??!
http://www.cplusplus.com/reference/clibrary/cmath/tan/
Compute tangent
Returns the tangent of an angle of x radians.
In C++, this function is overloaded in <complex> and <valarray> (see complex tan and valarray tan).
Parameters
x
Floating point value representing an angle expressed in radians.
retmas
Жарю без масла
803 / 685 / 143
Регистрация: 13.01.2012
Сообщений: 1,580
12.02.2012, 08:34     работа с функциями.что-то не так. #6
-=ЮрА=-, я ответил почему ошибки компиляции и показал идею, как избавится от нее, а градусы или радианы использует ТС я не вникал.
Yandex
Объявления
12.02.2012, 08:34     работа с функциями.что-то не так.
Ответ Создать тему
Опции темы

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