Ошибка в расчете объема сферы, но формула верна - PullRequest
0 голосов
/ 05 мая 2018

Я хочу рассчитать площадь поверхности сферы и объем сферы, но объем сферы неверен. Если я введу r = 3, то V = 84.8229980469 вместо V = 113.0973358154, хотя объем формулы сферы правильный. Пожалуйста, помогите мне. Это мой код.

#include<iostream>
#include<conio.h>
#include<stdio.h>
#include<math.h>
using namespace std;
float surface_area_of_sphere(float r)
{
    float L;
    L=4*3.14159265359*r*r;
    return L;
}

float volume_of_sphere(float r, float &V)
{
    V=4/3*3.14159265359*r*r*r;
}

int main()
{
    float radius,volume,area;
    cout<<"Please input radius of sphere r = ";
    cin>>radius;
    cout<<"==================================="<<endl;
    volume_of_sphere(radius,volume);
    cout<<"Volume of sphere = ";
    printf("%10.10f\n",volume);
    area=surface_area_of_sphere(radius);
    cout<<"Surface area of sphere = ";
    printf("%10.10f",area);
    getch();
}

Ответы [ 2 ]

0 голосов
/ 05 мая 2018

Как @Aganju предложил использовать:

L = 4.0 * 3.14159265359*r*r; 

и функция volume_of_sphere() не должна возвращать значение.

void volume_of_sphere(double r, double &V)
{
    V = 4.0 / 3.0 * 3.14159265359*r*r*r;
}

Также для разрешения pi = 3.14159265359 замените все float типы данных на double, чтобы получить желаемую точность.

0 голосов
/ 05 мая 2018

Вы используете 4 и 3 в своих вычислениях, это целые числа, поэтому математика делается с целыми числами. 4/3 = 1 в целочисленной арифметике.

Используйте 4.0 и 3.0 во всех местах, и это будет работать.

...