C ++ Перегрузка функций? Площадь круга - PullRequest
1 голос
/ 09 марта 2012

Я пытаюсь получить площадь круга, используя мою программу.Но площадь не в десятичных числах.

#include<iostream>

using namespace std;


float AreaOfCircle(float r);
int AreaOfCircle(int r);

int main()
{int rad;
    cout<<"Enter the Radius of Crircle: ";
    cin>>rad;
    cout<<"The Are of the Cirlcle: "<<AreaOfCircle(rad);

}
float AreaOfCircle(float r)
{
    int area=0;
    area=2*3.1456*r*r;
    return area;
}

int AreaOfCircle(int r)
{
    int area=0;
    area=2*3.1456*r*r;
    return area;
}

Но мне нужен ответ на какой-нибудь десятичный знак.

Ответы [ 3 ]

7 голосов
/ 09 марта 2012

Вы не вызываете float версию метода.

Либо объявите вашу переменную как float

float rad;

, либо приведите ее к float перед вызовомметод.

AreaOfCircle((float)rad);

Вы также должны использовать float вместо int внутри перегруженного метода:

float AreaOfCircle(float r)
{
    float area=0;   // <--- float here
    area=2*3.1456*r*r;
    return area;
}

Также:

area = pi * r * r
length = 2 * pi * r
pi ~= 3.1415
3 голосов
/ 09 марта 2012

В дополнение к ответу @Luchian вам необходимо изменить возвращаемое значение на float:

float AreaOfCircle(float r)
{
    int area=0;        // <<----- float area = 0;
    area=2*3.1456*r*r;
    return area;
}

и изменить на:

float AreaOfCircle(float r)
{
    float area=0;
    area=2*3.1456*r*r;
    return area;
}

или просто:

float AreaOfCircle(float r) { return 2*3.1456*r*r; }
0 голосов
/ 09 марта 2012

Компилятор вызовет перегрузку, которая, по его мнению, наилучшим образом соответствует типам передаваемых параметров.Поскольку вы передали int, предполагалось, что вам нужна версия int.

Приводя к float, как предложил Лучиан (или используя в первую очередь float), вы сообщаете компилятору, что вы хотите, чтобы параметр был типом с плавающей точкой - таким образом, он выбирает версию с плавающей точкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...