描述
计算一个浮点数的立方根,不使用库函数。
保留一位小数。
数据范围:|val| \le 20 \∣val∣≤20
输入描述:
待求解参数,为double类型(一个实数)
输出描述:
输出参数的立方根。保留一位小数。
示例1
输入:
19.9
输出:
2.7
示例2
输入:
2.7
输出:
1.4
#include <iostream>
double cubeRoot(double num)
{
double copynum = num;
if(num < 0)
{
num = -num;
}
double div = 20.0;
double rtnval = 0.0;
//1. 从0.0开始求立方和,将得到的值和num求差,差值最小的即是最接近num的值
double cube = 0.0;
if(num < 1)
{
while(cube < 1)
{
double temp = cube * cube * cube;
double divtemp = temp - num;
if(divtemp < 0)
{
divtemp = -divtemp;
}
if(divtemp < div)
{
rtnval = cube;
div = divtemp;
}
cube += 0.1;
}
}
else
{
while(cube < num)
{
double temp = cube * cube * cube;
double divtemp = temp - num;
if(divtemp < 0)
{
divtemp = -divtemp;
}
if(divtemp < div)
{
rtnval = cube;
div = divtemp;
}
cube += 0.1;
}
}
if(copynum < 0)
{
return -rtnval;
}
return rtnval;
}
int main()
{
double n;
std::cin >> n;
std::cout << cubeRoot(n) << std::endl;
return 0;
}